2016-11-15 37 views
2

我有一個包含多個數字的字符串,這些數字必須在同一個字符串中再次處理和替換。在字符串之間匹配多個數字,處理它們並替換

例如:

讓我們說我有:

my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001 

現在可以說,我想提取3647和乘除法或添加什麼東西。我們將3647/100 = 36.47分開,用0001中的原始數字替換爲0001,然後替換爲00.01。

結果字符串應該是:

my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01 

感謝你的幫助。我知道這很愚蠢,但我仍然在學習。

我試着這樣做:

Pattern intsOnly = Pattern.compile("\\d+"); 
    Matcher makeMatch = intsOnly.matcher("my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001"); 
    makeMatch.find(); 
    String inputInt = makeMatch.group(); 
    System.out.println(inputInt); 

但很明顯,它只能拿起第一個數字,因爲我沒有使用循環,還我真的不知道如何處理的數量。

+0

有你試過什麼了嗎? – XtremeBaumer

+0

請閱讀http://stackoverflow.com/help/how-to-ask。告訴我們你已經嘗試了什麼,哪些不起作用。 –

+0

是的,明白了。在問題中加入了我的試驗。謝謝! – Anusha

回答

1

試試這個:

final String regex = "\\d+"; 
    String string = "my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001"; 
    NumberFormat formatter = new DecimalFormat("00.00");  

    final Pattern pattern = Pattern.compile(regex); 
    final Matcher matcher = pattern.matcher(string); 

    while (matcher.find()) { 
     Float val=new Float(matcher.group(0)); 
     val=val/100; 
     string=string.replace(matcher.group(0),formatter.format(val)); 
    } 
    System.out.println(string); 

} 

輸出:

my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01 
+0

感謝您的快速響應。我嘗試了你提供的邏輯,它對大多數人來說工作正常,但是對於一些數字例如10034被打印爲100.0000.00.34等等。我想在此期間理解你的代碼,只是想通知你。感謝你的幫助。 – Anusha

+0

它應該被打印爲100.34,因爲我剛剛嘗試過......你需要給我一個更大的樣本有這樣的東西..還有一件事情,數字會被空間分開嗎? space10034space那樣? –

+0

在我的正則表達式中,沒有捕獲組...我所做的只是匹配數字.... matcher.group(0)匹配整個正則表達式...在這種情況下,只有數字...我是什麼我想知道的是,如果你已經使用了我的格式「00.00」,那你怎麼得到「100.0000.00.34」作爲結果..它會幫助你給我完整的樣本字符串,你已經嘗試了代碼 –

0
  1. 分割字符串成利用空間的基礎上
  2. 檢查每個單詞是否是一個適當的數字或不字陣列。
  3. ,如果它是一個數字設置標誌和標誌基礎上,應用邏輯替換詞入陣
  4. 打印整個數組作爲字符串或連接按您的要求
0

使用後應用你的邏輯 PatternMatcher你可以找到數字的位置。

Pattern pattern = Pattern.compile("\\d+"); 
Matcher matcher = pattern.matcher(yourStringGoesHere); 

while (matcher.find()) { 
    System.out.print("Start index: " + matcher.start()); 
    System.out.print(" End index: " + matcher.end() + " "); 
    System.out.println(matcher.group()); 
} 

然後您可以使用substring to add the period

0

我發現它here

public double isNumeric(String str){ 
    String number=""; 
    Double num=0; 
    for (char c : str.toCharArray()){ 
     if (Character.isDigit(c)){ 
     number+=c; 
     } 
    } 
    num = Double.parseDouble(number); 
    return num; //Then you can do whatever you want with this 
} 

對不起英語:/