首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中替换字符串中的字符?

如何在Java中替换字符串中的字符?
EN

Stack Overflow用户
提问于 2009-08-05 17:02:37
回答 10查看 459.3K关注 0票数 73

使用Java语言,我想遍历文本的每一行,并用XML实体引用&替换所有的“与”符号(&)。

我扫描文本行,然后使用Scanner类扫描文本中的每个单词。然后,我使用CharacterIterator遍历单词的每个字符。但是,我如何替换这个字符?首先,字符串是不可变的对象。其次,我想用几个字符(amp&;)替换一个字符(&)。我应该如何处理这个问题?

代码语言:javascript
复制
CharacterIterator it = new StringCharacterIterator(token);
for(char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
       if(ch == '&') {

       }
}
EN

回答 10

Stack Overflow用户

发布于 2009-08-05 17:04:37

请尝试使用String.replace()String.replaceAll()

代码语言:javascript
复制
String my_new_str = my_str.replace("&", "&");

(两者都会替换所有出现的内容;replaceAll允许使用正则表达式。)

票数 133
EN

Stack Overflow用户

发布于 2009-08-05 17:58:17

简单的答案是:

代码语言:javascript
复制
token = token.replace("&", "&");

尽管名字与replaceAll相比,replace确实做了一个replaceAll,只是它不使用正则表达式,这在这里似乎是符合顺序的(从性能和良好实践的角度来看-不要偶然使用正则表达式,因为它们有特殊的字符要求,而你不会注意到)。

Sean Bright的答案可能是从性能角度考虑的最好的答案,如果你已经知道这段代码是性能的热点,如果你的问题来自于此,那么从性能和性能测试方面没有更多的目标要求。它当然不配得到反对票。除非您需要同步,否则只需使用StringBuilder而不是StringBuffer。

也就是说,这里有一个更深层次的潜在问题。转义字符是一个已知的问题,许多库都在解决这个问题。您可能希望考虑将数据包装在XML中的CDATA部分中,或者您可能更喜欢使用XML库(包括现在JDK附带的库)来正确地实际生成XML (以便它可以处理编码)。

阿帕奇也有一个escaping library作为Commons Lang的一部分。

票数 91
EN

Stack Overflow用户

发布于 2009-08-05 17:06:10

代码语言:javascript
复制
StringBuilder s = new StringBuilder(token.length());

CharacterIterator it = new StringCharacterIterator(token);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
    switch (ch) {
        case '&':
            s.append("&");
            break;
        case '<':
            s.append("&lt;");
            break;
        case '>':
            s.append("&gt;");
            break;
        default:
            s.append(ch);
            break;
    }
}

token = s.toString();
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1234510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档