このコードを別の StackOverflow 投稿からコピーしました。しかし、私はそれにいくつかの問題を抱えています。指定されたパターンに一致するアイテムを置き換える必要がありますが、そうではありません。
コードは次のとおりです。
protected String FixHexValuesInString(String str){
Log.v(TAG, "before fix: "+ str);
Matcher matcher = Pattern.compile("\\\\x([0-9a-f]{2})").matcher(str);
while (matcher.find()) {
int codepoint = Integer.valueOf(matcher.group(1), 16);
Log.v(TAG, "matcher group 0: " + matcher.group(0));
Log.v(TAG, "matcher group 1: " + matcher.group(1));
str = str.replaceAll(matcher.group(0), String.valueOf((char) codepoint));
}
Log.v(TAG, " after fix: "+ str);
return str;
}
LogCat に書いた例を次に示します。
before fix: 'id': 1268, 'name': 'Reserva de Usos M\xfaltiples de la Cuenca del Lago de Atitl\xe1n-RUMCLA (Atitl\xe1n Watershed Multiple Use Reserve)'
matcher group 0: \xfa
matcher group 1: fa
matcher group 0: \xe1
matcher group 1: e1
matcher group 0: \xe1
matcher group 1: e1
after fix: 'id': 1268, 'name': 'Reserva de Usos M\xfaltiples de la Cuenca del Lago de Atitl\xe1n-RUMCLA (Atitl\xe1n Watershed Multiple Use Reserve)'
なぜこれが機能しないのか、誰にもわかりますか?