Mam długi ciąg, który muszę przeanalizować w tablicy ciągów, które nie przekraczają 50 znaków długości. Najtrudniejszą częścią tego dla mnie jest upewnienie się, że regex znajduje ostatnie spacje przed 50 znakami, aby zrobić czysty podział między ciągami znaków, ponieważ nie chcę, aby słowa zostały obcięte.Podziel tekst po określonej długości, ale nie łam się słów za pomocą grails
public List<String> splitInfoText(String msg) {
int MAX_WIDTH = 50;
def line = [] String[] words;
msg = msg.trim();
words = msg.split(" ");
StringBuffer s = new StringBuffer();
words.each {
word -> s.append(word + " ");
if (s.length() > MAX_WIDTH) {
s.replace(s.length() - word.length()-1, s.length(), " ");
line << s.toString().trim();
s = new StringBuffer(word + " ");
}
}
if (s.length() > 0)
line << s.toString().trim();
return line;
}
Podaj swoje wejście i wyjście oczekiwany? – anubhava
publiczna lista splitInfoText (String msg) { \t \t int MAX_WIDTH = 50; \t \t \t \t linii def = [] \t \t \t \t łańcuchowe [] słowa; \t \t \t msg = msg.trim(); \t \t \t \t słowa = msg.split (""); \t \t \t \t StringBuffer s = new StringBuffer(); \t \t \t \t words.each {słowo -> \t \t \t \t \t s.append (słowo + "„); \t \t \t \t \t \t if (s.length()> MAX_WIDTH) { \t \t \t \t \t \t \t s.replace (s.length() - word.length() - 1, s.length (), ""); . \t \t \t \t \t \t \t \t linia << s.toString() przycinania() \t \t \t \t \t \t \t \t s = nowy StringBuffer (słowo "+„); \t \t \t \t \t \t \t} \t \t \t \t \t} \t \t \t \t if (s.length()> 0) \t \t \t \t \t linia << s.toString().trim() \t \t \t \t \t powrót do linii; \t \t } –
Nimmy
@Nimmy: Próbowałem umieścić twój kod w głównej części pytania, ale będzie wyglądał znacznie lepiej, jeśli sam edytujesz swoje pytanie i wprowadzisz swój kod. – PearsonArtPhoto