删除Java字符串中的空格?
我正在为一些LISP文件编写解析器。我试图摆脱字符串中的前导空白。字符串内容如下:删除Java字符串中的空格?
: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}", " ")
- 但它对字符串没有任何影响。
有谁知道我在做什么错?这是因为它是一个多行字符串吗?
感谢
您的原始正则表达式不起作用,因为您忘记了避免反斜杠。这应该做你最初尝试做:
string.replaceAll("\\s{4}", " ")
编辑:我不知道,你没有,其实忘了转义反斜线,而堆栈溢出“吃”之一你的反斜杠,如Alan Moore在对这个答案的评论之一中指出(“\ s”和“\\s
”之间的唯一区别是反文本)。这就是说,我的原始答案是不会对你有太大的帮助,所以...
为了这个是有效的,你必须做一些String#replaceAll输出,因为它返回一个新的字符串,而不是修改现有的(Strings are immutable,因为William Brendel在他对你的问题的评论中指出)。
string = string.replaceAll("\\s{4}", " ")
由于这个答案其实并没有增加,而不是将其删除任何有价值的东西,我让它成为社区的Wiki。
他确实是这样写的,但他忽略了将这一点放在反引号中,所以该网站的格式化软件吃了一个反斜杠。 (我只是加了反引号,所以现在看起来就是这样。)我怀疑威廉布伦德尔是否正确,他只是没有将'replaceAll'的结果赋值给变量。 – 2010-06-17 23:26:51
啊。我没有意识到SO有问题。 – 2010-06-18 00:30:10
测试:\\ s'\\ s' \ s'\ s' – 2010-06-18 00:47:08
请记住,在Java中,字符串是不可变的,因此'String.replaceAll()'返回结果字符串而不修改原始字符串。确保你正在做'String result = original.replaceAll(...)'之类的东西。 – 2010-03-01 01:43:34