Java:按字符数分割字符串,但保证字符串仅在空格之后分割

标签 java string

我想要实现这样的目标。

String str = "This is just a sample string";

List<String> strChunks = splitString(str,8);

strChunks应该是这样的:

"This is ","just a ","sample ","string."

请注意,像“sample”这样的字符串只有 7 个字符,而如果有 8 个字符,它将是“sample s”,它将分解我的下一个单词“string”。

我们还可以假设一个单词永远不会大于方法的第二个参数(在示例中为 8),因为在我的用例中,第二个参数始终是静态的,值为 32000。

我能想到的明显方法是循环遍历给定的字符串,在 8 个字符后中断字符串,然后从末尾搜索下一个空格。然后对剩余的字符串再次重复相同的操作。

有没有更优雅的方法来实现同样的目的。一些标准的第三方库(如 Guava、Apache Commons)中是否已经有任何实用方法可用。

最佳答案

拆分"(?<=\\G.{7,}\\s)"生成您需要的结果 ( demo )。

\\G表示上一场比赛的结束; .{7,}指七个或以上任意字符; \\s表示空格字符。

关于Java:按字符数分割字符串,但保证字符串仅在空格之后分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39347398/

相关文章:

java - 从子类获取数据: Java

java.io.IOException : Unexpected response code for CONNECT: 400 异常

python-3.x - Python3过滤/删除列表的字符串

ruby 开始于?串行数据

python - python中字符串的上下文相关拆分

java - 约束布局中的dp和wrap_content

java - com.google.a.a.a.a.l 400 错误请求 { "error": "invalid_grant" } while inserting row in bigquery

java - 在数组列表中搜索字符串并打印该字符串

c char[] to jstring printf 适用于 int 类型,但不适用于 string

java - 使用 DnD 在 JPanel 中移动和重新排序 JLabel