【发布时间】:2010-04-16 14:37:44
【问题描述】:
我喜欢以一种有效的方式用相应的替换字符替换字符串的某一组字符。
例如:
String sourceCharacters = "šđćčŠĐĆČžŽ";
String targetCharacters = "sdccSDCCzZ";
String result = replaceChars("Gračišće", sourceCharacters , targetCharacters );
Assert.equals(result,"Gracisce") == true;
有没有比使用String类的replaceAll方法更有效的方法?
我的第一个想法是:
final String s = "Gračišće";
String sourceCharacters = "šđćčŠĐĆČžŽ";
String targetCharacters = "sdccSDCCzZ";
// preparation
final char[] sourceString = s.toCharArray();
final char result[] = new char[sourceString.length];
final char[] targetCharactersArray = targetCharacters.toCharArray();
// main work
for(int i=0,l=sourceString.length;i<l;++i)
{
final int pos = sourceCharacters.indexOf(sourceString[i]);
result[i] = pos!=-1 ? targetCharactersArray[pos] : sourceString[i];
}
// result
String resultString = new String(result);
有什么想法吗?
顺便说一句,UTF-8 字符造成了麻烦,使用 US_ASCII 可以正常工作。
【问题讨论】: