Ich muss eine Zeichenfolge in Stücke je nach einer bestimmten Größe aufteilen. Ich kann keine Wörter zwischen Chunks aufteilen, daher muss ich beim Hinzufügen des nächsten Wortes feststellen, dass es die Chunk-Größe überschreitet und die nächste beginnt (es ist in Ordnung, wenn ein Chunk kleiner als die angegebene Größe ist).Teilen Sie eine Zeichenfolge in Stücke der angegebenen Größe ohne Wörter zu brechen
Hier ist mein Arbeitscode, aber ich würde gerne einen eleganteren Weg finden, dies zu tun.
def split_into_chunks_by_size(chunk_size, string)
string_split_into_chunks = [""]
string.split(" ").each do |word|
if (string_split_into_chunks[-1].length + 1 + word.length > chunk_size)
string_split_into_chunks << word
else
string_split_into_chunks[-1] << " " + word
end
end
return string_split_into_chunks
end
funktioniert super, vielen Dank! noch eine Sache: können wir nachfolgende Leerzeichen genau hier einpassen? – psychickita
natürlich: 'str.scan (/. {1,25} \ W /). Map (&: strip)' –
Das ist nah an gut, aber es erfordert immer ein '\ W'-Zeichen am Ende. In Ihrem speziellen Beispiel funktionierte es am Ende wegen der ')' und '.', aber ohne es wird es nicht funktionieren. Jedes Chunk endet auch notwendigerweise mit einem '\ W'-Zeichen, wenn es nicht muss. – sawa