Java 将一个字符串中的所有整数添加到另一个字符串中

Java 将一个字符串中的所有整数添加到另一个字符串中,java,int,Java,Int,最好的方法是什么? 假设我有一个字母和数字混合的字符串 Srting str = "ha2iwea435"; String str2 = (str Digits); 我想要一个字符串,它只包含其他字母之间或末尾的数字。所以我的另一个字符串等于str的第四个字符,2。我想我需要将其放入for循环中,然后附加一个值为str2的列表,以便将str2分配给435。 比如说, for(int i = 0; str.length() > i; i++){ str2 = ""; if(

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

Srting str = "ha2iwea435";
String str2 = (str Digits);
我想要一个字符串,它只包含其他字母之间或末尾的数字。所以我的另一个字符串等于str的第四个字符,2。我想我需要将其放入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”)


谢谢

您可以使用正则表达式删除非数字字符:

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”;
字符串[]number=str.split(“[^\\d]”);
List=newarraylist();
用于(字符串编号:数字){
if(!number.isEmpty())list.add(Integer.parseInt(number));
}
System.out.println(“number=“+list”);//数字=[2435]
如果要将数字存储为字符串:

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]
String str=“ha2iwea435”;
字符串[]number=str.split(“[^\\d]”);
List List=newarraylist(Arrays.asList(numbers));
list.removeAll(Arrays.asList(“”));
System.out.println(“number=“+list”);//数字=[2435]

使用正则表达式是获取每个数字并将其存储在列表中的最简单方法

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);
Pattern=Pattern.compile(\\D+);
String str=“ha2iwea435”;
String[]nums=pattern.split(str);
列表值=新的ArrayList();
for(字符串s:nums)
add(Integer.parseInt(s));
//试验
for(int i:值)
系统输出打印LN(i);
String str=“ha2iwea435”;
字符串[]str1=str.replaceAll(“[\\D]”,“”)。拆分(((?
ArrayList result=new ArrayList();
String str=“ha2iwea435”;
Pattern p=Pattern.compile(“\\d++”);
匹配器m=p.Matcher(str);
while(m.find()){
字符串组=m.group();
result.add(Integer.parseInt(group));//结果[2435]
}

结果是一个包含2和435的列表

是的,除了列表之外,你应该使用StringBuilder。你为什么不试试,而不是问?因为我不知道怎么做,我想知道是否有更好的方法。你的问题不清楚。首先你说你想要字母之间的数字,然后是结尾的数字,然后是所有的数字。你知道吗我们还讨论了第四个字符,即
i
。请给我们输入和输出的示例。因此,最后,我将有一个列表,其中包含str中的所有数字。列表将等于(“2”,“435”)您的更新仍然不清楚。请给出输入/输出示例。谢谢,但我不需要所有数字,我需要字母之间的每个数字,这就是为什么我说它很可能必须在for循环中,以便我可以将值存储在列表中。
String str = "ha2iwea435";
String [] str1=str.replaceAll("[\\D]", "").split("(?<!^)");
    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]
    }