使用java将特殊字符替换为字符串中的字符引用

时间:2015-05-13 15:33:07

标签: java string replace special-characters entityreference

我有一个带有特殊字符的字符串,我想用相应的引用替换它。

例如

InputString -> Hi <Nishanth> How &are you !
OutputString -> Hi &ltNishanth&gt How &ampare you &excl

我尝试使用替换的概念。但我无法达到预期的效果。 我想要一个能在Java中为我做的功能。

1 个答案:

答案 0 :(得分:0)

replaceAll应该能够完成这项工作。

首先,让我们创建一个快速元组类来表示一对字符串:要搜索的字符串以及用以下字符串替换它的字符串:

private static class StringTuple{
    private String k;
    private String v;

    public StringTuple(String one, String two){
        k = one;
        v = two;
    }
}

有了这个,我们可以构建一个要搜索的特殊字符列表及其相应的替换。请注意,此列表将按照我们创建的顺序使用,因此我们必须首先替换可能会在其他替换中显示的特殊字符(例如&;)。< / p>

ArrayList<StringTuple> specialChars = new ArrayList<>();
specialChars.add(new StringTuple("&", "&amp;"));
specialChars.add(new StringTuple("<", "&lt;"));
specialChars.add(new StringTuple(">", "&gt;"));

最后,我们可以编写一个循环遍历特殊字符列表的函数,并用替换字符串替换所有出现的内容:

public static String replaceSpecialChars(String s, ArrayList<StringTuple> specialChars){
    for(StringTuple e: specialChars){
        s = s.replaceAll(e.k, e.v);
    }
    return s;
}

这是一个基于上述代码的可运行主体:

public static void main(String[] args) {
    ArrayList<StringTuple> specialChars = new ArrayList<>();
    specialChars.add(new StringTuple("&", "&amp;"));
    specialChars.add(new StringTuple("<", "&lt;"));
    specialChars.add(new StringTuple(">", "&gt;"));
    System.out.println(replaceSpecialChars("Hi <Nishanth> How are &you !", specialChars));
}

输出:Hi &lt;Nishanth&gt; How are &amp;you !