重复字符串序列,直到它在java中达到一定的长度

md1*_*nox 2 java string

我有两个字符串plainTextkey.现在,如果plainText.length > key.length那时我必须重复该键,直到它的长度相同plainText.这是一个例子:

plainText = "helloworld"
key="foobar"
Run Code Online (Sandbox Code Playgroud)

因此关键应该增加到"foobarfoob".

一种解决方案是重复整个单词,然后删除最后一个字符,直到它达到与"foobarfoobar"之类的plainText相同的长度,然后删除字符"ar".

在java中有没有更好(或更优雅)的方法呢?

Jon*_*eet 7

您的解决方案似乎是合理的,除了删除最后一个字符的方式 - 不要一次只做一个,只需使用子字符串或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();
Run Code Online (Sandbox Code Playgroud)

或者只是将附加调用更改为仅获得正确的大小:

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();
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢第一个 - 它更简单.