从Java中的字符串中提取此int的最佳方法是什么?
这里有一些输入,我可以给出从Java中的字符串中提取此int的最佳方法是什么?
1,4
34,2
-99,20
等等被包括
因此负值和1,2,3,等位是可能的实例。逗号不是唯一的分隔符,只是一个例子。但非整数值是parseInt不起作用的原因。我可以编码什么,这将允许我解析上述3个输入,以便我得到这个?
1
34
-99
使用此代码:
String str = "1,4 34,2 -99,20";
String[] arr = str.split("\\D+(?<![+-])");
for (int i=0; i<arr.length; i+=2)
System.out.println(Integer.parseInt(arr[i]));
OUTPUT:
1
34
-99
这是一个非常开放的问题...我会建议你先通过您的字符串,并格式化正确代所有的逗号为点的所有号码......然后,你需要把它分解,并那么你需要解析每个值。
对于每一步你可以找到很多帮助谷歌搜索。
即。
- 步骤1.字符串替代的java
- 步骤2.字符串分割的java
- 步骤3.字符串到int的java
可以用一个空字符串,然后替换除了数字的所有字符做一个parseInt
String intStr = inputStr.replaceAll("[^0-9]+","");
int i = Integer.parseInt(intStr);
而这不会将1和2合并为一个int,12吗? – Chucky 2012-02-07 18:07:16
是的,正则表达式应该更像''[^ \\ d]。*“'。但它不是很可读。 – 2012-02-07 18:13:44
您可以使用正则表达式(正则表达式)。
用逗号打破了一个简单的例子:
String[] values = string.split(",")
for (String a : values) {
Integer.parseInt(a);
}
检查长度为0的字符串以避免NumberFormatException – 2012-02-07 17:40:53
另外,OP只需要第一个值。 – 2012-02-07 18:14:42
如果你只使用逗号,你可以这样做
String numbers = "1,34,-99";
String[] splitNums = numbers.split(",");
int[] ints = null;
for(int i = 0; i < splitNums.length(); i++)
{
ints[i] = Integer.valueOf(splitNums[i]);
}
如果您希望输入仅在存在分隔符时才有效,请改为使用"([\\-0-9]*)[,]+.*"
。
如果你想添加额外的分隔符,例如:
,添加到定界符集,例如"([\\-0-9]*)[,|:]+.*"
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
try {
String s1 = "-99,20";
System.out.println(getNumber(s1));
s1 = "1,4";
System.out.println(getNumber(s1));
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getNumber(String s1) throws Exception {
Pattern pattern = Pattern.compile("([\\-0-9]*)[,]*.*");
Matcher m = pattern.matcher(s1);
if(m.find()) {
return Integer.parseInt(m.group(1));
}
throw new Exception("Not valid input");
}
}
还有什么其他的分隔符? – 2012-02-07 17:29:45
你确定逗号是分隔符吗?因为像* 4 34 *这样的数字对我来说没有意义......要么是* 2 -99 *。看起来空格是分隔符,逗号用作句点(例如欧洲的标准)。所以这些数字将是'1.4 34.2 -99.20' – m0skit0 2012-02-07 17:30:39
换行符意味着单独的输入,我应该说。 – Chucky 2012-02-07 17:34:12