用其他字符替换(而不是删除)字符串中的特殊字符

时间:2018-11-14 15:00:16

标签: java android indexof replaceall

我需要将"《br》"替换为"<br>"

replaceAll不起作用,但是如果我在调试时在变量窗口中使用它,那么它将起作用!

indexOf("《")相同,返回-1,但使用变量window返回12

如何更换?

This is what I see in the variable windows when debugging. The same in code does not work.

This is what I see in the code (check this>: pos1=-1)

所以问题是,如何使其在代码中起作用

2 个答案:

答案 0 :(得分:2)

由于String是不可变的,因此您不会更改text变量的原始值。 replaceAll用正确的值创建新的String,您必须将其分配给变量才能使用。

用法参考可以在here中找到更多说明,但是基本用法是:

String originalText ="some text with letters to replace";  
String newTextWithReplacedValues = originalText.replaceAll("a","e");//replaces all occurrences of "a" to "e"  
System.out.println(newTextWithReplacedValues);  

由于text.replaceAll(...)返回正确的值,因此您可以看到它在调试器中正在工作。它只是不更改原始text变量。

答案 1 :(得分:1)

对我来说,更换就可以了。

public class Application {
    public static void main(String[] args) {
        String s = "《br》";
        s = s.replace("《", "<").replace("》", ">");
        System.out.println(s);
    }
}

《可能不是单个字符,因为'<'给出了一个错误,但是“ <”有效。

这是Character documentation:

  

有时会引用从U + 0000到U + FFFF的字符集   作为基本的多语言平面(BMP)。代码指向的字符   大于U + FFFF的字符称为补充字符。 Java   平台在char数组和   String和StringBuffer类。在此表示形式中,补充   字符表示为一对char值,第一个从   高代理范围(\ uD800- \ uDBFF),从   低代理范围(\ uDC00- \ uDFFF)。