假设我有一个以数字开头的字符串。 如何获取/提取所有第一个数字并将其转换为整数?不需要字符串上的所有数字,我想要从第一个数字到最后一个在其他字母或字符之前的数字。
例如:
String s= "5634-abofrda/+l8908"; // 5634
String str="78695t08675jgk"; // 78695
我如何获得号码5634? 我正在寻找一个通用的解决方案,而不是针对所描述的案例。
答案 0 :(得分:2)
使用正则表达式。匹配和分组数字,后跟任何内容,然后将所有内容替换为匹配的组。喜欢,
System.out.println(s.replaceAll("(\\d+).+", "$1"));
打印(按要求)
5634
答案 1 :(得分:2)
此方法可用于在找到另一个字符之前返回数字
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;
}
用法:
getNumbers(s);
getNumbers(str);
输出:
5634
78695
答案 2 :(得分:1)
最简单的选择可能是只使用String#split
:
String s = "5634-abofrda/+l8908";
String nums = s.split("-")[0];
请注意,在连字符不应出现在输入字符串中的情况下,nums
就是整个字符串。
或者您想要这样:
String s = "5634-abofrda/+l8908";
String nums = s.split("(?=\\D)")[0];
每当有非数字字符时,超前(?=\D)
就会分割字符串。这样会将前导数字保留在拆分数组的第一个字符串中。