删除Java字符串中的空格?

时间:2010-03-01 01:36:08

标签: java regex whitespace

我正在为一些LISP文件编写解析器。我正试图摆脱字符串中的前导空格。字符串内容沿着以下行:

         :FUNCTION (LAMBDA
                   (DELTA
                    PLASMA-IN-0)
                 (IF
                  (OR
                   (>=
                    #61=(+
                         (*
                          1
                          DELTA)
                         PLASMA-IN-0)
                    100)
                   (<=
                    #61#
                    0))
                  PLASMA-IN-0
                  #61#))

标签在文件中全部打印为4个空格,因此我想摆脱这些主要标签。

我尝试这样做:string.replaceAll("\\s{4}", " ") - 但它对字符串完全没有影响。

有谁知道我做错了什么?是因为它是一个多行字符串吗?

由于

2 个答案:

答案 0 :(得分:8)

String.trim();

应该工作。

答案 1 :(得分:1)

您的原始正则表达式无效,因为您忘记了反斜杠。这应该做你原本想做的事情:

string.replaceAll("\\s{4}", " ")

编辑:事实上,我没有意识到你没有忘记逃避反斜杠,并且Stack Overflow“吃掉”了你的一个反斜杠,Alan Moore指出在这个答案的一个评论中(“\ s”和“\\s”之间的唯一区别是文本的反引号)。话虽这么说,我原来的答案对你没什么帮助,所以......

为了使其有效,您必须对String#replaceAll的输出执行某些操作,因为它返回一个新的String而不是修改现有的String Strings are immutable,因为{{3}在他对你的问题的评论中指出。)

string = string.replaceAll("\\s{4}", " ")

由于这个答案实际上没有添加任何有价值的东西,而是删除它,我正在制作社区Wiki。