非常简单的问题 - 我有一个看起来像PR:MTH 1 MTR 7
的字符串。我想将该字符串中的数字提取为整数变量。
问题在于我不知道这些整数有多少位数。例如PR:MTH 100000 MTR 777
也是一个有效的字符串。所以我无法指定数字所在的确切索引。
我们可以肯定的是,第一个数字的MSB在索引7处(我算了)。
java中有一些String方法或StringBuilder方法吗?还是我需要自己写一个?
答案 0 :(得分:3)
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]);
答案 1 :(得分:1)
你应该尝试拆分(""),然后取你需要的值并转换为整数
答案 2 :(得分:1)
您可以执行ArrayList<Integer>
并使用try-catch块迭代该数组搜索所有数字。为了保存它们,您可以使用 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);
}
。
select id, str, count(1)
from thetable
group by id
希望这能帮到你!
答案 3 :(得分:0)
要解决一般情况,请使用正则表达式查找数字:
myService
这样做的好处是可以处理没有明确分隔符的输入,例如输入字符串是
String number1 = str.replaceAll("\\D*(\\d+).*", "$1");
String number2 = str.replaceAll("\\D*\\d+\\D+(\\d+).*", "$1");
上述代码会成功提取foo123bar456baz
和123
。