在String java

时间:2015-04-28 10:26:14

标签: java string split

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

我使用str.split("-")

成功提取0和1000

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

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

有人可以为我建议方法吗?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

由于String.split()使用正则表达式进行拆分,您可以执行以下操作:

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

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

请注意,需要使用正面后瞻(?<=\d),因为您只想匹配减号。 String.split()删除所有匹配的分隔符,因此\d-之类的内容也会删除数字。

要解析数字,然后迭代数组元素并调用Integer.valueOf(element)Integer.parseInt(element)

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