Dưới đây là quan điểm của tôi
private static final String linebreak = "\n"; // or "\r\n";
public static String wrap(String string, int lineLength) {
StringBuilder b = new StringBuilder();
for (String line : string.split(Pattern.quote(linebreak))) {
b.append(wrapLine(line, lineLength));
}
return b.toString();
}
private static String wrapLine(String line, int lineLength) {
if (line.length() == 0) return linebreak;
if (line.length() <= lineLength) return line + linebreak;
String[] words = line.split(" ");
StringBuilder allLines = new StringBuilder();
StringBuilder trimmedLine = new StringBuilder();
for (String word : words) {
if (trimmedLine.length() + 1 + word.length() <= lineLength) {
trimmedLine.append(word).append(" ");
} else {
allLines.append(trimmedLine).append(linebreak);
trimmedLine = new StringBuilder();
trimmedLine.append(word).append(" ");
}
}
if (trimmedLine.length() > 0) {
allLines.append(trimmedLine);
}
allLines.append(linebreak);
return allLines.toString();
}
(Giải pháp này các chuyến đi hai không gian để một khoảng trống (do cùng lỗi mà @jett có với Apache commons WordUtils)).
Nguồn
2017-08-10 12:49:28
Thar là Dragons :-) –
Bạn có phải là một thuật toán hoàn hảo pixel hay một phép tính xấp xỉ sẽ thực hiện? – aioobe