我有一個很長的字符串,需要解析爲長度不超過50個字符的字符串數組。對我來說這個棘手的部分是確保正則表達式在50個字符之前找到最後一個空格,以便在字符串之間進行乾淨的中斷,因爲我不希望單詞被截斷。文本在指定長度後拆分,但不使用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;
}
提供您的輸入和預期的輸出? – anubhava 2012-03-12 06:06:09
public list splitInfoText(String msg){ \t \t int MAX_WIDTH = 50; \t \t \t DEF \t線= [] \t \t \t 字符串\t []字; \t \t \t msg = msg.trim(); \t \t \t \t words = msg.split(「」); \t \t \t \t StringBuffer s = new StringBuffer(); \t \t \t \t words.each {字 - > \t \t \t \t \t s.append(字+「「); \t \t \t \t \t \t如果(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線<< s.toString()修剪() \t \t \t \t \t \t \t \t S =新的StringBuffer(字+「「); \t \t \t \t \t \t \t} \t \t \t \t } \t \t \t \t 如果\t(s.length()> 0) \t \t \t \t \t線<< s.toString()。修剪() \t \t \t \t \t return line; \t \t \t} –
Nimmy
2012-03-12 06:55:41
@Nimmy:我試圖把你的代碼放到問題的主體中,但是如果你自己編輯你的問題並放入你的代碼中,它會更好。 – PearsonArtPhoto 2012-03-12 07:02:23