提取字符串中的数字 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
格式,其中 x
和 y
可以是正整数或负整数。
我有一个非常简单的问题是我有一个字符串 0-1000
说 str = "0-1000"
我使用 str.split("-")
现在,我被分配去检查这个数字,因为我注意到这两个数字可能是负数。
如果我继续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
格式,其中 x
和 y
可以是正整数或负整数。