将String中的所有整数添加到另一个String

时间:2012-12-07 14:00:15

标签: java int

最好的方法是什么?
假设我有一个字母与字母和数字混合,

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”)的列表

谢谢!

4 个答案:

答案 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的列表