java - 删除文本中数字中的多余空格

标签 java regex string split

有什么方法可以在不使用繁重的正则表达式的情况下从句子中的数字中删除多余的空格吗?

我编写了这段代码,但是当我针对巨大的输入文本执行它时,它似乎花费了很多时间。

    String text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+) +(?=[0-9]+[$|€|£|¥|¥|%|°])", "");
    text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+), +(?=[0-9]+[$|€|£|¥|¥|%|°])", ",");
    text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+)\\. +(?=[0-9]+[$|€|£|¥|¥|%|°])", ".");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+) +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", "");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+), +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", ",");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+)\\. +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", ".");

例如。对于输入:

bla bla bla 12, 09 bata tata 11. 02

输出应该是

bla bla bla 12,09 bata tata 11.02

注意小数点之间的空格是如何被删除的。

最佳答案

你可以这样做:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));

输出:

bla bla bla 12.09 bata tata 11.02

关于使用的正则表达式:

它是任意数量的数字,后跟 .,,后跟任何空格,后跟任何数字。 我们在正则表达式中使用了分组。

关于java - 删除文本中数字中的多余空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596404/

相关文章:

mysql - 如何在同一行的datagridview中插入2个不同的数组字符串

c# - 在 C# 中进行字符串比较时如何处理 %20

java - 如何从 JButton 获取按下的字母并将其与字符串进行比较

java - Java中的字符串是如何分配内存的?

java - 将表连接添加到现有项目会导致无限递归

java - 在 fragment 之间导航时保​​存状态

javascript - 在程序中进行多层数据验证是否可以深度防御故障或代码困惑的偏执狂?

java - 如何使用不同的热键添加焦点遍历?

javascript - RegEx 作为 if else 语句中的条件返回意外结果

regex - 使用 ACK 作为过滤器