Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中最有效的子字符串替换_Java_Hashmap - Fatal编程技术网

Java中最有效的子字符串替换

Java中最有效的子字符串替换,java,hashmap,Java,Hashmap,我正在将XML(JATS标准)编写到LaTeX转换器,我想知道转义LaTeX特殊符号的最佳方法是什么。在我的转换器中,XML中的所有数据都通过setter传输到Java对象,然后通过getter写入TeX文件。 包含来自节点的文本作为字符串的对象的简单代码: public class Par extends ParContent { private String parContent; public String getContent() { retur

我正在将XML(JATS标准)编写到LaTeX转换器,我想知道转义LaTeX特殊符号的最佳方法是什么。在我的转换器中,XML中的所有数据都通过setter传输到Java对象,然后通过getter写入TeX文件。 包含来自节点的文本作为字符串的对象的简单代码:

public class Par extends ParContent {
    private String parContent;

    public String getContent() {    
        return parContent;
    }

    public void setContent(String parContent) {
        this.parContent = parContent;

    }
}
我现在需要的是替换符号,它们在LaTeX中具有特殊意义。为此,使用了HashMap。例如:

public String replacement(String parContent) {
        HashMap<String, String> forReplacement = new HashMap<String, String> ();
        forReplacement.put("%", "\\%");
        forReplacement.put("±", "$\\pm$");
        forReplacement.put("<", "\\textless{}");
        forReplacement.put(">", "\\textgreater{}");
        //String parContent1 = null;
        for (Entry<String, String> entry : forReplacement.entrySet()) {
            if (parContent.contains(entry.getKey())) {
                parContent = parContent.replace(entry.getKey(), entry.getValue());
            }   
        }
        return parContent;
    }
公共字符串替换(字符串内容){
HashMap forReplacement=新的HashMap();
用于替换。放置(“%”,“\\%”);
用于替换。放置(“±”、“$\\pm$”;
用于替换。put(“,”\\textmorer{}”);
//字符串parContent1=null;
for(条目:forReplacement.entrySet()){
if(parContent.contains(entry.getKey())){
parContent=parContent.replace(entry.getKey(),entry.getValue());
}   
}
返回部分内容;
}
我个人有两个问题:

  • 就速度而言,这是最有效的方法吗?有很多需要 要替换的符号的名称
  • 与setter(设置时)一起使用是否更好 值)或getter(在检索值时)或 几率

速度是个问题吗?一些要考虑的事情,对于可变的替换来说可能是有意义的,这是一个更容易阅读的静态字段。这个数据结构真的没有理由成为地图。它实际上只是一个包含两个值的项目列表。@Vitaly我至少会删除
包含的内容,然后
替换
,只需执行
replaceAll
替换即可,谢谢