我有一串有点奇怪的数字。我从中提取的源具有非标准格式,我正在尝试从 .split 切换,我需要在其中指定精确的拆分方法(2 个空格、3 个空格等),以替换所有正则表达式。
我的数据如下所示:
23574 123451 81239 1234 19274 4312457 1234719
我想结束
23574,xxxxx,xxxxx,xxxx
所以我可以在 , 上做一个 String.split
我将使用正则\s
表达式
这是它在 Java 上的用法
String[] numbers = myString.split("\\s+");
String pattern = "(\s+)";
Pattern regex = Pattern.compile(pattern);
Matcher match = r.matcher(inputString);
match.replaceAll(",");
String stringToSplit = match.toString();
我认为这应该为你做。如果没有,在 java api 中搜索 Matcher 和 Pattern 类将非常有帮助。
我将此问题理解为一种从带有空白(不仅是空格)分隔符的字符串中获取整数的方法。
\t
例如,如果分隔符是 TAB 或结尾有一个,则可接受的解决方案不起作用\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+");
它被翻译为使用任何非数字字符序列作为可能的分隔符拆分此修剪后的字符串。