我正在尝试根据行数限制将长字符串分成较小的块。以下面为例
这是一个长标头。它是有目的的。目的是测试拆分是否正确。它应该远远超过线路限制。如果更短,则不会测试该限制。
如果行数限制为70,则应拆分为
这是一个长标头。它是有目的的。目的是测试
拆分正确。应该很好了
限制。如果更短,则不会测试该限制。
我想到的正则表达式如下,但是有问题。
(\S*?.{1,70}(\s|\Z))
https://regex101.com/r/Vr5QNZ/3/
如果一个单词由于某种原因太长,它将不会分裂,因为它只寻找空白。举例来说,如果我将这个问题的网址放在字符串中(将h删除到http中,以便它实际显示)
ttps://stackoverflow.com/questions/7528045/large-string-split-into-lines-with-maximum-length-in-java 备注这是一个长标头。它是有目的的。目的是测试 请注意,分割工作正常。应该很好 备注限制。如果更短,则不会测试该限制。
输出为
ttps://stackoverflow.com/questions/7528045/large-string-split-into-lines-with-maximum-length-in-java
这是一个长标头。它是有目的的。目的是测试
拆分正确。应该很好了
限制。如果更短,则不会测试该限制。
第一行超出了70个字符的限制,并且由于没有空格可拆分,因此仅超过了70个字符。我希望如果在用完70个字符之前存在一个空格,或者如果不存在则在空白处拆分,然后在70个字符标记处拆分。正确的示例看起来像
ttps://stackoverflow.com/questions/7528045/large-string-split-into-lin
Java中的最大长度这是一个长标头。 很久了目的。目的是测试拆分是否有效
正确。它应该远远超过线路限制。如果是
更短,则它不会测试该限制。
答案 0 :(得分:1)
不确定我是否理解这个问题,但这是否可以解决您的问题:(\ S *?[^] {1,70}(\ s | \ Z |))