非常简单的问题-我有一个看起来像PR:MTH 1 MTR 7
的字符串。我想把那个字符串中的数字提取成整数变量。
问题是我不知道这些整数有多少位数。例如CCD_ 2也是有效的字符串。所以我不能指定数字所在的确切索引。
我们所能确定的是,第一个数字的MSB在索引7(我数过了)。
java中是否有一些String方法或StringBuilder方法可以做到这一点?还是我需要自己写一本?
String#split
在这种情况下是您的朋友
用空格和冒号拆分字符串,并解析相应的索引。
String s = "PR:MTH 100000 MTR 777";
String[] split = s.split("[ :]");
int one = Integer.parseInt(split[2]);
int two = Integer.parseInt(split[4]);
您应该尝试split("),然后取所需的值并转换为整数
您可以执行yourString.split(" ");
并使用try-catch块迭代该数组以搜索所有数字。为了保存它们,您可以使用ArrayList<Integer>
。
我会做一些类似的事情:
String myString = "dsfsd 12 12 dd";
ArrayList<Integer> numbers = new ArrayList<>();
String[] splitString = myString.split(" ");
for (String split : splitString) {
try {
numbers.add(Integer.valueOf(split));
} catch (java.lang.NumberFormatException e) {
//not a number
}
}
System.out.printf("I have %d numbers in my String! n", numbers.size());
为了获得数字,您只需要迭代ArrayList
。
for (Integer number : numbers) {
//your code
System.out.println(number);
}
希望这对你有帮助!
要解决一般情况,请使用正则表达式查找数字:
String number1 = str.replaceAll("\D*(\d+).*", "$1");
String number2 = str.replaceAll("\D*\d+\D+(\d+).*", "$1");
这具有处理没有明确分隔符的输入的优势,例如,如果输入字符串是
foo123bar456baz
上述代码将成功地提取CCD_ 7和CCD_。