【问题标题】:in Java how can I replace "space and dot" to only "dot"?在 Java 中,如何将“空格和点”替换为“点”?
【发布时间】:2013-06-28 17:43:47
【问题描述】:

我有一个例子:

"hello . world . thanks ."

我想得到这个:

"hello. world. thanks."

我试过了

text = text.replaceAll(" .",".");
text = text.replaceAll(" \\.",".");
text = text.replaceAll(" \\.","\\.");

但它不起作用。有什么解决办法吗??

谢谢大家

【问题讨论】:

  • 你尝试后得到了什么?
  • 请注意,正则表达式中的[.](仅包含句点的字符类)消除了. 的通配符含义,而无需“转义”。此外,替换值被视为正则表达式(而是has other rules)。
  • 你的第二行适合我:"hello . world . thanks .".replaceAll(" \\.", ".");

标签: java replace space


【解决方案1】:

replaceAll 使用正则表达式进行第一次论证。如果你想要一些非常简单的东西(也就是给出的例子,假设你的实际问题不是更复杂),你可以使用replace

text = text.replace(" .", ".");

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace(java.lang.CharSequence, java.lang.CharSequence)

【讨论】:

  • 非常感谢!!很简单
【解决方案2】:

您的第二种方法应该有效。

我猜你可能在 . 之前有 1 到多个空格或制表符。在这种情况下,如果你有它们,你需要使用 + 量词来匹配 1 到多个空格

text = text.replaceAll("\\s+[.]",".");

由于. 在正则表达式中有特殊含义,您需要使用\\.[.] 将其转义,这将按字面意思对待.

\s 类似于[ \t\r\n]

【讨论】:

    【解决方案3】:

    我建议您不要使用String.replaceAll 开头。您在这里不需要 正则表达式,那么为什么要让自己变得更难呢?请改用String.replace

    text = text.replace(" .", ".");
    

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 2022-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多