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 ,replaceCharSequence 将触发异常 【参考方案2】:

使用非正则表达式方法String.replace(..):str.replace("GeoData[", "")

(人们往往会错过这个方法,因为它需要CharSequence 作为参数,而不是String。但是String 实现了CharSequence

【讨论】:

顺便说一句:在设计字符串密集型 API 时,使用CharSequence 而不是String 是一个非常好的主意。如果用户可以无缝使用StringBuilderStringBuffer,而不需要明确的toString(),他们将不胜感激。

以上是关于Java:从文本文件字符串中替换“[”“]”的主要内容,如果未能解决你的问题,请参考以下文章

Java提取文本文档中的所有网址(小案例介绍正则基础知识)

java中如何实现删除文本文档里面的指定字符

python查找文本文档中特定间隔位置的字符并替换

Java:从文本文件字符串中替换“[”“]”

如何从python中的文本文档中删除所有标点符号和其他符号?

labview如何读取文本文档中某一行的字符串