[英]Java - separate numbers from a string
我有一个包含一些数字(通常是日期)和分隔符的字符串。 分隔符可以是“,”或“。”。 -或示例01.05,2000.5000
....现在我需要将这些数字分开,并放入一个数组中,但是我不确定如何做到这一点(分开的部分)。 另外,我需要检查字符串是否有效-不能为01.,05。
我并没有要求任何人为我解决问题(但是,如果有人希望我对此有所感激),只需指出正确的方向即可:)
遍历String#split(regex)
生成的数组,并检查每个值以确保您的源String
为“有效”。
在:
String src = "01.05,2000.5000";
String[] numbers = src.split("[.,]");
这里的numbers
将是一个Strings
数组,例如{"01", "05", "2000", "5000"}
。 每个值都是一个数字。
现在遍历numbers
。 如果找到的索引不是数字(当numbers[i].matches("\\\\d+")
为true
时为numbers[i].matches("\\\\d+")
),则您的src
无效。
验证:
if (input.matches("^(?!.*[.,]{2})[\\d.,]+))
此正则表达式检查:
分开:
String[] numbers = input.split("[.,]");
这是使用StringTokenizer类完成此操作的一种方法,只需迭代令牌,如果获得的令牌为空,则您具有无效的String,也可以使用parseInt方法将令牌转换为整数,以检查它们是否为有效的整数:
import java.util.*;
public class t {
public static void main(String... args) {
String line = "01.05,2000.5000";
StringTokenizer strTok = new StringTokenizer(line, ",.");
List<Integer> values = new ArrayList<Integer>();
while (strTok.hasMoreTokens()) {
String s = strTok.nextToken();
if (s.length() == 0) {
// Found a repeated separator, String is not valid, do something about it
}
try {
int value = Integer.parseInt(s, 10);
values.add(value);
} catch(NumberFormatException e) {
// Number not valid, do something about it or continue the parsing
}
}
// At the end, get an array from the ArrayList
Integer[] arrayOfValues = values.toArray(new Integer[values.size()]);
for (Integer i : arrayOfValues) {
System.out.println(i);
}
}
}
使用正则表达式对输入进行分组和匹配
String s = "01.05,2000.5000";
Pattern pattern = Pattern.compile("(\\d{2})[.,](\\d{2})[.,](\\d{4})[.,](\\d{4})");
Matcher m = pattern.matcher(s);
if(m.matches()) {
String[] matches = { m.group(1),m.group(2), m.group(3),m.group(4) };
for(String match : matches) {
System.out.println(match);
}
} else {
System.err.println("Mismatch");
}
如果可能的话,我将使用番石榴字符串拆分器。 它比String#split
更加可靠,可预测和灵活。 您可以准确地告诉它期望什么,省略什么等等。
有关示例用法,以及关于愚蠢的java split
有时会表现出一些小俗语的信息,请在此处查看: http : //code.google.com/p/guava-libraries/wiki/StringsExplained#Splitter
尝试这个:
String str = "01.05,2000.5000";
str = str.replace(".",",");
int number = StringUtils.countMatches(str, ",");
String[] arrayStr = new String[number+1];
arrayStr = str.split(",");
StringUtils
来自Apache Commons
>> http://commons.apache.org/proper/commons-lang/
为了分隔字符串,请使用split(),该方法的参数为定界符
数组= string.split(“ separator”);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.