我正在编写Java代码,处理从主机接收的字符串,其中包含需要用其他特殊字符替换的特殊字符。我的搜索字符是
目前我的代码如下:
但它会生成以下错误:
§ÄÖÜäüßö@[\]~{¦}
,替换字符是@[\]{}~¦§ÄÖÜßäöü
。因此,如果字符串中有一个{
,我需要用ä
进行替换。我的输入示例是"0.201322.05.2017LM-R{der Dopp"
。目前我的代码如下:
String repChar = "§ÄÖÜäüßö@[\\\\]~{¦}@[\\\\]{}~¦§ÄÖÜßäöü";
// Split String and Convert
String repCharin = repChar.substring(0, repChar.length()/2-1);
String repCharout = repChar.substring(repChar.length()/2, repChar.length()-1);
String strblob = new String(utf8ContentIn);
// Convert
for (int j=0; j < repCharin.length();j++) {
strblob = strblob.replace(repCharin.substring(j, 1), repCharout.substring(j, 1));
}
byte [] utf8Content = strblob.getBytes();
但它会生成以下错误:
“\\”是转义字符,我只需要一个“\”。java.lang.StringIndexOutOfBoundsException at java.lang.String.substring(String.java:1240)
strblob = strblob.replace(repCharin.substring(j, 1), repCharout.substring(j, 1));
可能应该是strblob = strblob.replace(repCharin.substring(j, j+1), repCharout.substring(j, j+1));
。 - Zedee.Chen.substring
调用初始化repCharin
和repCharout
都是错误的 - 它们提取的字符串长度都短了一个字符。在我看来,你应该放弃这种无意义的方法,直接使用正确的字符串字面量来初始化repCharin
和repCharout
。 - Kevin Anderson