-1

做这个的最好方式是什么?
假设我有一个混合了字母和数字的字符串,

Srting str = "ha2iwea435";
String str2 = (str Digits);

我想要一个字符串,其中仅包含其他字母之间或末尾的数字。所以我的另一个字符串等于 str, 2 的第 4 个字符。我想我需要把它放在一个 for 循环中,然后附加一个带有 str2 值的列表,这样我就可以将 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”)的列表

谢谢!

4

4 回答 4

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]
于 2012-12-07T14:03:25.277 回答
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);
于 2012-12-07T14:09:50.953 回答
0
String str = "ha2iwea435";
String [] str1=str.replaceAll("[\\D]", "").split("(?<!^)");

str1 只会给你数字数组。

于 2012-12-07T14:12:52.660 回答
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 的列表

于 2012-12-07T14:16:02.277 回答