我有这么长的文字:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vestibulum id augue id mattis. Praesent congue nisi quam, ac gravida enim viverra non. Vestibulum id interdum sapien, vitae volutpat nisi. Praesent id euismod ipsum. Vestibulum et pulvinar urna, id venenatis ante. Cras commodo eget ligula sit amet mattis. Maecenas congue turpis urna, a bibendum sem consequat nec.
字符串
我想把它分成(最多50个字符/行):
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Duis vestibulum id augue id mattis. Praesent
congue nisi quam, ac gravida enim viverra non.
Vestibulum id interdum sapien, vitae volutpat nisi.
Praesent id euismod ipsum. Vestibulum et pulvinar
urna, id venenatis ante. Cras commodo eget ligula
sit amet mattis. Maecenas congue turpis urna, a
bibendum sem consequat nec.
型
我不想分裂的话,所以我不想:
Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Duis vestibulum id augue id mattis. Praesen
t congue nisi quam, ac gravida enim viverra non. V
estibulum id interdum sapien, vitae volutpat nisi.
Praesent id euismod ipsum. Vestibulum et pulvinar
urna, id venenatis ante. Cras commodo eget ligula
sit amet mattis. Maecenas congue turpis urna, a b
ibendum sem consequat nec.
型
我尝试使用String#index、String#split等。
没有栏杆,谢谢。
我不明白为什么贪婪在我的最佳解决方案中不起作用:
str = "Lorem ipsum [etc.]"
p str
.scan(/[^ \n]{1,50}/)
.join("\n")
型
然而:
str = "(again)and again)and again)"
p str.scan(/\(.+\)/).first
# => "(again)and again)and again)"
p str.scan(/\(.+?\)/).first
# => "(again)"
# My hope:
p str.scan(/\(.{1,15}\)/).first
# => "(again)and again)"
型
多谢帮忙!
4条答案
按热度按时间bq9c1y661#
字符串
5cnsuln72#
对以下最佳解决方案进行基准测试:
字符串
剧本:
wecizke33#
如果
str
保存字符串,Demo
假设最后一行包含至少两个非空白字符(例如,句点前面有一个字母)。如果最后一行可能包含一个空白字符,则将
.{0,48}\S
替换为.{0,49}(?<=\S)
。yvt65v4c4#
我的解决方案:
字符串