最好的方法是什么?
假设我有一个字母与字母和数字混合,
Srting str = "ha2iwea435";
String str2 = (str Digits);
我想要一个字符串,其中只包含其他字母之间或最后的数字。所以我的另一个字符串将等于str的第4个字符,2。我想我需要将它放在for循环中,然后追加一个值为str2的List,这样我就可以将str2指定给435了。
例如,
for(int i = 0; str.length() > i; i++){
str2 = "";
if(str(char_here(i).isNUMBER()) {
for(y = i; str(char_here[y]).isNUMBER(); y++) {
str2 += str.(char_here);
}
}
List1.add(str2);
}
我不知道要使用哪些方法和测试。
所以最后,我会有一个等于(“2”,“435”)的列表
谢谢!
答案 0 :(得分:1)
您可以使用正则表达式删除非数字字符:
String str = "ha2iwea435";
String numbers = str.replaceAll("[^\\d]","");
System.out.println("numbers = " + numbers); //prints 2435
如果您需要列表中的每组数字,您可以拆分字母并将每个组添加到列表中:
String str = "ha2iwea435";
String[] numbers = str.split("[^\\d]");
List<Integer> list = new ArrayList<> ();
for (String number : numbers) {
if (!number.isEmpty()) list.add(Integer.parseInt(number));
}
System.out.println("numbers = " + list); // numbers = [2, 435]
如果您想将数字存储为字符串:
String str = "ha2iwea435";
String[] numbers = str.split("[^\\d]");
List<String> list = new ArrayList<> (Arrays.asList(numbers));
list.removeAll(Arrays.asList(""));
System.out.println("numbers = " + list); // numbers = [2, 435]
答案 1 :(得分:0)
使用正则表达式是获取每个数字并将其存储在列表中的最简单方法。
Pattern pattern = Pattern.compile("\\D+");
String str = "ha2iwea435";
String[] nums = pattern.split(str);
List<Integer> values = new ArrayList<Integer>();
for(String s : nums)
values.add(Integer.parseInt(s));
//test
for(int i : values)
System.out.println(i);
答案 2 :(得分:0)
String str = "ha2iwea435";
String [] str1=str.replaceAll("[\\D]", "").split("(?<!^)");
str1只会为您提供数字数组。
答案 3 :(得分:0)
ArrayList<Integer> result = new ArrayList<Integer>();
String str = "ha2iwea435";
Pattern p = Pattern.compile("(\\d++)");
Matcher m = p.matcher(str);
while (m.find()) {
String group = m.group();
result.add(Integer.parseInt( group)); // result [2,435]
}
结果是一个包含2和435的列表