从java中的字符串中抓取int

时间:2012-11-06 04:18:06

标签: java regex string

假设我有一个字符串“-1 2” 有没有“反向string.format”,我可以抓住那些像

这样的整数
Integer first = new Integer();
Integer second = new Integer();
String.grab("%d %d", first, second);
print(first + " " second); // prints "-1 2"

4 个答案:

答案 0 :(得分:3)

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

虽然我从来没有真正看到它在家庭作业之外使用过。

答案 1 :(得分:2)

字符串中的int是否总是以相同的方式格式化?如果是这样,为什么不使用split()?

String input = "-1 21"
String[] stringArray = input.split(" ");

然后只打印出数组中的每个元素。

String printedString = "";
for (int i = 0; i < stringArray.length; i++) {
    printedString += stringArray[i] + " ";
{

System.out.println(printedString);

根据您的需求进行优化。

答案 2 :(得分:1)

您可以按空格分割输入,然后在每个字符串上调用Integer.parseInt:

String input = "-1 2 -4 6 8";
String[] numberStringArray = input.split(" ");

for (String s : numberStringArray) {
    int n = Integer.parseInt(s);
    System.out.println("n = " + n);
}

注意 :这会进行ZERO错误检查

答案 3 :(得分:0)

使用Integer.parseInt()

将所有非数字替换为空白:其余字符串仅包含数字。

Integer.parseInt(s.replaceAll("[\\D]", ""))

这也会删除数字之间的非数字,因此"x1x1x"变为11

如果您需要确认该字符串是由一系列数字(至少一个)可能跟随一个字母组成的,那么请使用:

s.matches("[\\d]+[A-Za-z]?")

请参阅stackoverflow中的此问题 - get-int-from-string-also-containing-letters-in-java