【问题标题】:Remove every space EXCEPT leading spaces删除除前导空格外的所有空格
【发布时间】:2020-10-29 12:03:06
【问题描述】:

我需要从字符串中删除所有空格,除了前导空格。

我有一些看起来像这样的字符串:

"              h        ello"

我正在努力实现这一目标:

"              hello"

这就像一个相反的trim()

最有效的方法是什么?

【问题讨论】:

    标签: java string trim


    【解决方案1】:

    您可以将 replaceAll 与此正则表达式 (?<=\S)(\s+)(?=\S) 一起使用,如下所示:

    str = str.replaceAll("(?<=\\S)(\\s+)(?=\\S)", "");
    

    输入和输出示例:

    "              h   ello  "        => "              hello  "
    "              hello,  word  "    => "              hello,word  "
    

    第一个正则表达式只保留前导和尾随空格,如果您只想保留前导空格,则可以使用此正则表达式(?&lt;=\S)(\s+)

    输入和输出示例:

    "              hello  "         => "              hello"
    "              hello,  word  "  => "              hello,word"
    

    【讨论】:

    • (?=\\S) 防止删除尾随个空格,但它只应保留前导个空格。
    • @Andreas 这是正确的,我添加了另一个解决方案:)
    • “第一个正则表达式将删除 ...”您的意思是“保留”吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多