2013-12-15 126 views
0

我有一個字符串:獲得多個整數從字符串

"3, V, 11, H, 21, H" 

,我試圖讓

int first = 3 
int second = 11 
int third = 21 

我不完全知道如何做到這一點,因爲這些數字可能是一個或兩位數字,數字之間有非數字字符,我必須捕獲多個數字。我嘗試了正則表達式,但後來我留下了「31121」,它不表示三個數字是什麼。

+0

'我試過正則表達式,但後來我剩下「31121」'我們可以看到你的代碼產生這個輸出嗎?此外,您的數據看起來似乎是數字,數據,數字,數據,數字,數據......。在這種情況下,您可以將逗號分隔輸入,並將每個索引元素解析爲整數。 – Pshemo

回答

1

試試看看這個代碼。應該讓你完成工作。

public static void main(String[] args){ 
    String s = "3, V, 11, H, 21, H"; 
    String[] t = s.split(" [ ,]*|,[ ,]*"); 
    int first = Integer.parseInt(t[0]); 
    int second = Integer.parseInt(t[2]); 
    int third = Integer.parseInt(t[4]); 
    System.out.println(first); 
    System.out.println(second); 
    System.out.println(third); 
} 
+0

你應該使用'.trim()'。我想't [2]'會是「11」 –

+0

@mikeyaworski不是,它不是 –

+1

哦,因爲你把它與包含的空間分開。那麼它會工作,但只有在這些完全嚴格的條件下。 –

1

您可以通過","分割你的字符串,並檢查它是否是一個數字使用NumberUtils.isNumber (String str)org.apache.commons.lang.math.NumberUtils

檢查字符串是否有效的Java數字。

有效數字包括用0x限定符標記的十六進制數,用科學記數法標記的 以及用類型限定符標記的數字(例如 123L)。

空和空字符串將返回false。

String s = "3, V, 11, H, 21, H"; 
for(String st : s.split(",")){ 
    if(NumberUtils.isNumber(st.trim())) 
     System.out.println(st); 
} 

如果你想檢查字符串僅包含數字,您可以使用NumberUtils.isDigits(String str)

1
public static void main(String[] args) { 

    String in = "3, V, 11, H, 21, H"; 

    List<String> storage = Arrays.asList(in.split(",")); 
    List<Integer> output = new ArrayList<Integer>(); 

    int first = 0; 
    int second = 0; 
    int third = 0; 

    for(String str : storage){ 
     if(str.trim().matches("[0-9]+")){ // or if(NumberUtils.isNumber(str)) 
      output.add(Integer.parseInt(str.trim())); 
     } 
    } 

    if(output.size() == 3){ 
     first = output.get(0); 
     second = output.get(1); 
     third = output.get(2); 
    } 

    System.out.print("first: "); System.out.println(first); 
    System.out.print("second: "); System.out.println(second); 
    System.out.print("third: "); System.out.println(third); 

} 

輸出:

first: 3 
second: 11 
third: 21 
0

您可以通過,拆分此字符串然後檢查每個部分是否是這樣的數字:

import java.util.*; 
public class HelloWorld{ 

    public static void main(String []args){ 
     String str = "3, V, 11, H, 21, H"; 
     String[] parts = str.split(", "); 
     ArrayList<Integer> listNumbers = new ArrayList<Integer>(); 
     for(String x : parts){ 
     try{ 
      listNumbers.add(Integer.parseInt(x)); 
     } 
     catch(Exception e){}  
     } 

     for(int i=0;i<listNumbers.size();i++) System.out.println("Number "+(i+1)+" : "+listNumbers.get(i)); 
    } 

}