从 Java 上的字符串中获取第一个数字

eye*_*ash 5 java string parsing

假设我有一个以数字开头的字符串。如何获取/提取所有第一个数字并将它们转换为整数?不想要字符串上的所有数字,我想要从第一个到任何其他字母或字符之前的最后一个的数字。

例如:

 String s= "5634-abofrda/+l8908"; // 5634
 String str="78695t08675jgk"; // 78695
Run Code Online (Sandbox Code Playgroud)

我如何获得数字 5634?我正在寻找一个通用的解决方案,而不是针对所描述的案例。

小智 8

此方法可用于在找到另一个字符之前返回一个数字

static int getNumbers(String s) {

    String[] n = s.split(""); //array of strings
    StringBuffer f = new StringBuffer(); // buffer to store numbers

    for (int i = 0; i < n.length; i++) {
        if((n[i].matches("[0-9]+"))) {// validating numbers
            f.append(n[i]); //appending
        }else {
            //parsing to int and returning value
            return Integer.parseInt(f.toString()); 
        }   
    }
    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

用法:

getNumbers(s);
getNumbers(str);
Run Code Online (Sandbox Code Playgroud)

输出:

5634
78695
Run Code Online (Sandbox Code Playgroud)


Ell*_*sch 5

使用正则表达式。匹配和分组数字后跟任何内容,并用匹配的组替换所有内容。喜欢,

System.out.println(s.replaceAll("(\\d+).+", "$1"));
Run Code Online (Sandbox Code Playgroud)

印刷品(根据要求)

5634
Run Code Online (Sandbox Code Playgroud)