あなたの解決策は、最後の文字を削除する方法以外は合理的です。一度に1つずつ実行しないでください。部分文字列またはを使用してStringBuilder.setLength()
ください。
// Make sure we never have to expand...
StringBuilder builder = new StringBuilder(plainText.length() + key.length() - 1);
while (builder.length() < plainText.length()) {
builder.append(key);
}
builder.setLength(plainText.length());
String result = builder.toString();
または、append 呼び出しを変更して、適切なサイズのみを取得するようにします。
StringBuilder builder = new StringBuilder(plainText.length());
while (builder.length() < plainText.length()) {
builder.append(key.substring(0, Math.min(key.length(),
builder.length() - plainText.length()));
}
String result = builder.toString();
個人的には最初のほうが好きです - よりシンプルです。