在JavaME中转义字符串的最快方法

我有一个看起来像这样的方法:

public static String escape(String text)
{
   String r = replace(text, "\\", "\\\\");
   r = replace(r, "\r", "\\r");
   r = replace(r, "\b", "\\b");
   r = replace(r, "\t", "\\t");
   r = replace(r, "\n", "\\n");
   r = replace(r, "\f", "\\f");
   return r;
}

有没有更快,更不残酷的方法来执行此操作,如果是这样的话,它将是什么样?

请注意,这是J2ME,因此没有Apache公用,也没有正则表达式.

解决方法:

我会做下面的事情.您必须为自己的目标设备进行基准测试以确保性能,但是我认为它肯定会更快,因为您不会为每次替换创建新的String对象.并且,从堆的角度来看创建垃圾会更好,这可能会或可能不会有助于堆碎片化.

public static String escape(String text) { 
    if(text == null) {
        return null;
    }

    int numChars = text.length();
    char ch;
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < numChars; i++) {
        ch = text.charAt(i);

        switch(ch) {
            case '\\':  { sb.append("\\\\"); break; }
            case '\r':  { sb.append("\\r"); break; }
            case '\b':  { sb.append("\\b"); break; }
            case '\t':  { sb.append("\\t"); break; }
            case '\n':  { sb.append("\\n"); break; }
            case '\f':  { sb.append("\\f"); break; }
            default: {
                sb.append(ch);
                break;
            }
        }
    }
    return sb.toString();
}
上一篇:jQuery Ajax 请求报长度过长的错误:Error during serialization or deserialization using the JSON JavaScriptSerializer


下一篇:用Python的elementtree替换作为数字字符引用一部分的与号