【问题标题】:Grabbing ints from a string in java从java中的字符串中获取整数
【发布时间】:2012-11-06 04:18:06
【问题描述】:

假设我有一个字符串“-1 2” 是否有一个“反向 string.format”,我可以在其中获取这些整数,例如

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

【问题讨论】:

  • 你需要支持所有的空白之王吗?还是您的输入仅用一个空格分隔
  • 如果数字由 space 分隔,您可以使用带有空格的扫描仪作为分隔符并使用 Integer.parseInt() 将提取的数字(字符串)转换为 integer

标签: java regex string


【解决方案1】:

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

虽然我从未真正见过它在家庭作业之外使用。

【讨论】:

  • +1 表示从未见过它用于愤怒...因为它(恕我直言)基本上很烂。
  • 展示如何在这种情况下使用它的代码示例将有助于回答这个问题。
  • @Paul:他看起来像一个聪明的年轻人,只需要朝着正确的方向轻推。我实际上并不推荐使用Scanner,但如果没有更多信息,很难说最好的解决方案是什么。
  • 还有...既然扫描仪是为学生准备的,那就让他们享受宝贵的学习经验吧!
【解决方案2】:

字符串中的ints 是否总是以相同的方式格式化?如果是这样,为什么不使用 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);

根据您的需求进行优化。

【讨论】:

  • 我打算发布这样的内容,但我正在等待找出他是否有不止一种空格;)
【解决方案3】:

你可以用空格分割你的输入,然后在每个字符串上调用 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);
}

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

【讨论】:

    【解决方案4】:

    使用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

    【讨论】:

    • 这不会得到单独的数字。您希望 2 1 3 返回 3 个 Integer 对象,而不是数字 213
    • 那么我们是在处理散布着空白“噪音”(即狡猾的输入)的数字,还是以空格分隔的数字?...我的蜘蛛侠感觉告诉我它是后者...只是因为它更合乎逻辑.
    • @durron597 你可以使用Integer.parseInt()
    • Integer.parseInt() 仅返回 1 int。他有一串文字超过1个int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    相关资源
    最近更新 更多