2012-01-09 47 views
2

我有一個String類似如下:如何插入逗號成若干中的其他詞的字符串

"The answer is 1000" 

我想插入逗號到數1000不破壞String的其餘部分。

注意:我也希望將其用於不同長度的其他String s,因此不建議使用substring(int index)獲取該號碼。

我能想到的最好方法是使用regex命令,但我不知道如何。

在此先感謝!

+2

給我們更多的信息。它總是1000?還是4位數字?或者它可以是更長的數字?每千分之一是逗號嗎? (在提問時,這是供將來參考的......給出明確的信息,以便我們可以回答你) – 2012-01-09 02:09:58

+0

只有一個數字在短語中? – 2012-01-09 02:10:30

+0

使用http://stackoverflow.com/questions/1558432/extracting-a-number-from-a-string-in-java? – 2012-01-09 02:13:08

回答

5

以下格式的所有非十進制數字:

public String formatNumbers(String input) { 
    Pattern p = Pattern.compile("\\d+"); 
    Matcher m = p.matcher(input); 
    NumberFormat nf = NumberFormat.getInstance();   
    StringBuffer sb = new StringBuffer(); 
    while(m.find()) { 
    String g = m.group(); 
    m.appendReplacement(sb, nf.format(Double.parseDouble(g)));    
    } 
    return m.appendTail(sb).toString(); 
} 

eg如果您致電:formatNumbers("The answer is 1000 1000000")

結果是:"The answer is 1,000 1,000,000"

見:NumberFormatMatcher.appendReplacement()

+0

這隻適用於String中有數字的情況。在少數情況下,不會有數字。發生這種情況時,屏幕上不顯示任何內容。 EX:我想要「答案是1000」。它說「答案是1000」YAY!現在我想要「這是一個很好的答案」。它說「」不!請幫忙。 – Confiqure 2012-01-09 11:48:53

+0

@ JavaCoder-1337:爲此只需檢查'result'是否爲空或空值。我已經更新了我的答案。 – 2012-01-09 14:41:18

+0

非常感謝! – Confiqure 2012-01-09 22:38:39

0

你可以使用正則表達式:

[0-9]+ 

爲了找到相鄰的臺位,所以它會匹配1000,或750022387234,等等。你可以在此http://regexpal.com/不處理這個測試涉及小數點的數字的情況,BTW。

這是不是一個完整的,具有代碼的回答,但基本算法如下:

  • 您使用該模式在字符串中找到匹配(ES)的指數(ES)(其中各種比賽開始字符)
  • 從每這些索引的索引,數字複製到包含字符串
  • 你寫一個的號碼的數字的臨時字符串從字符串的末尾開始的函數,以及插入的每個第三個數字(從結尾開始)逗號之前它,除非當前字符的索引是0(這將防止從300正在變成,300
  • 替換源串與comma'ed字符串在原來號碼,使用replace()方法
1

Most efficient way to extract all the (natural) numbers from a string修改:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class Example { 

private static final String REGEX = "\\d+"; 

public static void main(String[] args) { 
    String input = "dog dog 1342 dog doggie 2321 dogg"; 
    Pattern p = Pattern.compile(REGEX); 
    Matcher m = p.matcher(input); // get a matcher object 
    int end = 0; 
    String result = ""; 
    while (m.find()) { 
     result = result + input.substring(end, m.start()); 
     result = result 
       + addCommas(
         input.substring(
           m.start(), m.end())); 
     end = m.end(); 
    } 
    System.out.println(result); 
} 

private static String addCommas(String s) { 
    char[] c = s.toCharArray(); 
    String result = ""; 
    for (int i = 0; i < s.length(); i++) { 
     if (s.length() % 3 == i % 3) 
      result += ","; 

     result += c[i]; 
    } 
    return result; 
} 

}

+0

與βнɛƨнǤʋяʋиɢ的帖子一樣,這對於沒有數字的字符串不起作用。 。 – Confiqure 2012-01-09 12:21:26

相關問題