2012-02-07 55 views
2

這裏有一些輸入,我可以給出從Java中的字符串中提取此int的最佳方法是什麼?

1,4 
34,2 
-99,20 

等等被包括

因此負值和1,2,3,等位是可能的實例。逗號不是唯一的分隔符,只是一個例子。但非整數值是parseInt不起作用的原因。我可以編碼什麼,這將允許我解析上述3個輸入,以便我得到這個?

1 
34 
-99 
+0

還有什麼其他的分隔符? – 2012-02-07 17:29:45

+0

你確定逗號是分隔符嗎?因爲像* 4 34 *這樣的數字對我來說沒有意義......要麼是* 2 -99 *。看起來空格是分隔符,逗號用作句點(例如歐洲的標準)。所以這些數字將是'1.4 34.2 -99.20' – m0skit0 2012-02-07 17:30:39

+0

換行符意味着單獨的輸入,我應該說。 – Chucky 2012-02-07 17:34:12

回答

2

使用此代碼:

String str = "1,4 34,2 -99,20"; 
String[] arr = str.split("\\D+(?<![+-])"); 
for (int i=0; i<arr.length; i+=2) 
    System.out.println(Integer.parseInt(arr[i])); 

OUTPUT:

1 
34 
-99 
1

這是一個非常開放的問題...我會建議你先通過您的字符串,並格式化正確代所有的逗號爲點的所有號碼......然後,你需要把它分解,並那麼你需要解析每個值。

對於每一步你可以找到很多幫助谷歌搜索。

即。

  • 步驟1.字符串替代的java
  • 步驟2.字符串分割的java
  • 步驟3.字符串到int的java
1

可以用一個空字符串,然後替換除了數字的所有字符做一個parseInt

String intStr = inputStr.replaceAll("[^0-9]+",""); 
int i = Integer.parseInt(intStr); 
+0

而這不會將1和2合併爲一個int,12嗎? – Chucky 2012-02-07 18:07:16

+0

是的,正則表達式應該更像''[^ \\ d]。*「'。但它不是很可讀。 – 2012-02-07 18:13:44

3

您可以使用正則表達式(正則表達式)。

用逗號打破了一個簡單的例子:

String[] values = string.split(",") 
for (String a : values) { 
    Integer.parseInt(a); 
} 
+2

檢查長度爲0的字符串以避免NumberFormatException – 2012-02-07 17:40:53

+0

另外,OP只需要第一個值。 – 2012-02-07 18:14:42

1

如果你只使用逗號,你可以這樣做

String numbers = "1,34,-99"; 
String[] splitNums = numbers.split(","); 
int[] ints = null; 
for(int i = 0; i < splitNums.length(); i++) 
{ 
    ints[i] = Integer.valueOf(splitNums[i]); 
} 
1

如果您希望輸入僅在存在分隔符時纔有效,請改爲使用"([\\-0-9]*)[,]+.*"

如果你想添加額外的分隔符,例如:,添加到定界符集,例如"([\\-0-9]*)[,|:]+.*"

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

public class Test { 
    public static void main(String args[]) { 
     try { 
      String s1 = "-99,20"; 
      System.out.println(getNumber(s1)); 

      s1 = "1,4"; 
      System.out.println(getNumber(s1)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    public static int getNumber(String s1) throws Exception { 
     Pattern pattern = Pattern.compile("([\\-0-9]*)[,]*.*"); 
     Matcher m = pattern.matcher(s1); 
     if(m.find()) { 
      return Integer.parseInt(m.group(1)); 
     } 

     throw new Exception("Not valid input"); 
    } 
} 
相關問題