Java Regex用于拆分空格数量未知的数字

时间:2012-09-24 19:13:43

标签: java regex

我有一串数字有点奇怪。我正在提取的源有一个非标准的格式,我正在尝试从.split切换到需要指定一个精确的方法来拆分(2个空格,3个空格等)到一个替换正则表达式。

我的数据如下:

23574     123451    81239   1234    19274  4312457     1234719

我想以

结束
23574,xxxxx,xxxxx,xxxx 

所以我可以在

上做一个String.split

4 个答案:

答案 0 :(得分:11)

我将使用\s Regex

这是它在Java上的用法

String[] numbers = myString.split("\\s+");

答案 1 :(得分:3)

final Iterable<String> splitted = Splitter.on('').trimResults().omitEmptyStrings().split(input);
final String output = Joiner.on(',').join(splitted);

与番石榴SplitterJoiner

答案 2 :(得分:2)

String pattern = "(\s+)";
Pattern regex = Pattern.compile(pattern);
Matcher match = r.matcher(inputString);
match.replaceAll(",");
String stringToSplit = match.toString();

我认为应该为你做。如果没有,谷歌搜索java api中的Matcher和Pattern类将非常有用。

答案 3 :(得分:0)

我理解此问题是从带有空格(不仅是空格)分隔符的字符串中获取整数的一种方法。

例如,如果分隔符是TAB \t或结尾处有\n,则可接受的解决方案将不起作用。

如果我们将整数定义为数字序列,则解决此问题的最佳方法是使用简单的正则表达式。检查Java 8 Pattern API,我们可以发现\D代表任何非数字字符:

\D  A non-digit: [^0-9]

因此,如果String.split()方法接受带有可能的分隔符的正则表达式,则很容易将"\\D+"发送到修剪后的字符串,并像这样一举获得结果。

String source = "23574     123451    81239   1234    19274  4312457     1234719";
String trimmed = source.trim();
String[] numbers = trimmed.split("\\D+");

它翻译为 使用任何非数字字符序列作为可能的分隔符分割此修剪后的字符串