Java:从文本文件字符串中替换“[”“]”
Posted
技术标签:
【中文标题】Java:从文本文件字符串中替换“[”“]”【英文标题】:Java: replace "[" "]" from text files strings 【发布时间】:2011-06-30 19:14:59 【问题描述】:我正在使用
str.replaceAll("GeoData[", "");
在我的文本文件中的某些字符串中替换“[”符号,但我得到:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 7
GeoData[
^
at java.util.regex.Pattern.error(Pattern.java:1713)
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:replaceAll
方法将参数解释为正则表达式。在正则表达式中,如果你想要它的字面意思,你必须转义[
,否则它会被解释为字符类的开始。
str = str.replaceAll("GeoData\\[", "");
如果您不打算使用正则表达式,请改用 replace
,正如 Bozho 在他的 answer 中提到的那样。
【讨论】:
谢谢,还有一个问题:符号 "\" 呢?我应该使用 "\\\" 吗?好像不行…… @Patrick:从你的问题中不清楚你为什么使用replaceAll。也许您打算按照 Bozho 的建议使用替换? 是的,你说得对。我实际上已经解决了,我只是想知道如何替换符号“\”(这是一个不同的问题)。 @Patrick 应该是 \\\\ 您需要为 java 字符串和正则表达式转义 \。所以 \\\\ 将有效地创建一个字符串 \\ ,然后正则表达式解析器将其视为转义 \ 警告:如果 JRE ,replace
和 CharSequence
将触发异常
【参考方案2】:
使用非正则表达式方法String.replace(..)
:str.replace("GeoData[", "")
(人们往往会错过这个方法,因为它需要CharSequence
作为参数,而不是String
。但是String
实现了CharSequence
)
【讨论】:
顺便说一句:在设计字符串密集型 API 时,使用CharSequence
而不是String
是一个非常好的主意。如果用户可以无缝使用StringBuilder
和StringBuffer
,而不需要明确的toString()
,他们将不胜感激。以上是关于Java:从文本文件字符串中替换“[”“]”的主要内容,如果未能解决你的问题,请参考以下文章