我正在为一些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}", " ")
- 但它对字符串完全没有影响。
有谁知道我做错了什么?是因为它是一个多行字符串吗?
由于
答案 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。