1

長いテキストを折り返して数行で表示する必要があります。デフォルトのスニペットを試しました:

String s = "Español texto aquí";
StringBuilder sb = new StringBuilder(s);

int i = 0;
while (i + 20 < sb.length() && (i = sb.lastIndexOf(" ", i + 20)) != -1) {
sb.replace(i, i + 1, "\n");
}

System.out.println(sb.toString());

しかし、スペイン語のテキストでは、出力に間違った記号が表示されます。英語以外のテキストをラップするにはどうすればよいですか?

4

3 に答える 3

5
String s = "Español texto aquí texto aquí Español texto aquí";
StringBuilder sb = new StringBuilder(s);

int i = 0;
while (i + 20 < sb.length() && (i = sb.lastIndexOf(" ", i + 20)) != -1) {
  sb.replace(i, i + 1, "\n");
}

System.out.println(sb.toString());

版画

Español texto aquí
texto aquí Español
texto aquí

今、私はそれについて何も問題はないと思います。

于 2012-06-25T20:47:19.277 に答える
1

Java は、私が見た中で最も優れた UTF-8 テキストの処理の 1 つを備えています (内部的に UTF-16 を使用しています)。

ここで OS またはエンコーディングに依存する唯一のものは、使用している行区切り文字です。あなたは試すかもしれません

System.lineSeparator()  // Java 7 only

また

System.getProperty("line.separator")

の代わりに\n

それでも解決しない場合、問題はおそらくコードではなく、結果を読み取っているコンソール/ターミナルにあります。ソース .java ファイルが UTF-8 として保存されていることを確認し、出力をコンソールではなくファイルにリダイレクトしてみてください。

于 2012-06-25T20:52:51.447 に答える