長さが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
公開リスト splitInfoText(文字列msg){ \t \t int MAX_WIDTH = 50; \t \t \t \t DEFライン= [] \t \t \t \tのString []の単語; msgstr(); msg32 \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 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線<< 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 IF(s.length()> 0) \t \t \t \t \t線<< s.toString()。trim() \t \t \t \t \t return line; \t \t \t –
Nimmy
@Nimmy:質問の本体にコードを挿入しようとしましたが、自分で質問を編集してコードを入力すると、はるかに良くなります。 – PearsonArtPhoto