我有一個字符串:獲得多個整數從字符串
"3, V, 11, H, 21, H"
,我試圖讓
int first = 3
int second = 11
int third = 21
我不完全知道如何做到這一點,因爲這些數字可能是一個或兩位數字,數字之間有非數字字符,我必須捕獲多個數字。我嘗試了正則表達式,但後來我留下了「31121」,它不表示三個數字是什麼。
我有一個字符串:獲得多個整數從字符串
"3, V, 11, H, 21, H"
,我試圖讓
int first = 3
int second = 11
int third = 21
我不完全知道如何做到這一點,因爲這些數字可能是一個或兩位數字,數字之間有非數字字符,我必須捕獲多個數字。我嘗試了正則表達式,但後來我留下了「31121」,它不表示三個數字是什麼。
試試看看這個代碼。應該讓你完成工作。
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);
}
你應該使用'.trim()'。我想't [2]'會是「11」 –
@mikeyaworski不是,它不是 –
哦,因爲你把它與包含的空間分開。那麼它會工作,但只有在這些完全嚴格的條件下。 –
您可以通過","
分割你的字符串,並檢查它是否是一個數字使用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)
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
您可以通過,
拆分此字符串然後檢查每個部分是否是這樣的數字:
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));
}
}
'我試過正則表達式,但後來我剩下「31121」'我們可以看到你的代碼產生這個輸出嗎?此外,您的數據看起來似乎是數字,數據,數字,數據,數字,數據......。在這種情況下,您可以將逗號分隔輸入,並將每個索引元素解析爲整數。 – Pshemo