アクセント付きの文字をアクセント付きの文字に置き換えることを目的としたこの小さなコードがあります。Windowsで動作しているcharAt問題
protected String sinAcentos(String str) {
// Cadena de caracteres original a sustituir.
String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ";
// Cadena de caracteres ASCII que reemplazarán los originales.
String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC";
String tmp = str;
for (int i=0; i<original.length(); i++) {
// Reemplazamos los caracteres especiales.
tmp = tmp.replace(original.charAt(i), ascii.charAt(i));
}//for i
return tmp;
}
この関数をIDE(eclipse)内から実行するとエラーは発生しません。 しかし、私はWindows 7とWindows XP上で動作する実行可能な製品を作成してエクスポートします。
関数は、エラーが発生し、テキストである実行すると:範囲外の
インデックス:だから34
、34は元の文字列変数のな長さです。したがって、loop条件が0と33の間でループのループが起こります。i < original.lenght()
...
私は、try ... catch行を追加してコードを変更しています。
コードの何が間違っていますか?