Potrzebuję podzielić ciąg na kawałki według określonego rozmiaru. Nie mogę łamać słów między porcjami, więc muszę złapać, gdy kolejne słowo przejdzie przez wielkość porcji i zacznie następną (jest ok, jeśli porcja jest mniejsza niż określony rozmiar).Podziel ciąg na kawałki o określonej wielkości bez łamania słów
Oto mój działający kod, ale chciałbym znaleźć bardziej elegancki sposób, aby to zrobić.
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
działa świetnie, wielkie dzięki! jeszcze jedno: czy możemy przyciąć końcowe miejsca tutaj? – psychickita
oczywiście: 'str.scan (/. {1,25} \ W /). Map (&: strip)' –
To jest prawie dobre, ale zawsze wymaga znaku '\ W' na końcu. W twoim konkretnym przykładzie zadziałało to z powodu ')' i '.' na końcu, ale bez niego, to nie zadziała. Każdy fragment również koniecznie kończy się znakiem '\ W', gdy nie musi. – sawa