提取字符串中的数字 java

Extract number in a String java

我有一个非常简单的问题是我有一个字符串 0-1000 说 str = "0-1000"

我使用 str.split("-")

成功提取了 0 和 1000

现在,我被分配去检查这个数字,因为我注意到这两个数字可能是负数。

如果我继续str.split("-"),那么我也会跳过负号。

谁能给我推荐方法?

您可以像这样使用正则表达式:适用于所有情况

public static void main(String[] args) {
    String s = "-500--578";
    String[] arr = s.split("(?<=\d)-"); // split on "-" only if it is preceeded by a digit
    for (String str : arr)
        System.out.println(str);
}

O/P:

-500
-578

由于String.split()使用正则表达式分割,你可以这样做:

String[] nos = "-1000--1".split("(?<=\d)-";

这意味着您在数字后面的减号字符处拆分,即必须是运算符。

请注意,由于您只想匹配减号字符,因此需要使用正向后视 (?<=\d)String.split() 删除所有匹配的分隔符,因此像 \d- 这样的东西也会删除数字。

要解析数字,您需要遍历数组元素并调用 Integer.valueOf(element)Integer.parseInt(element)

请注意,这假设输入字符串有效。根据您想要实现的目标,您可能首先必须检查输入是否匹配,例如通过使用 -?\d--?\d 检查字符串是否为 x-y 格式,其中 xy 可以是正整数或负整数。