gpt4 book ai didi

java - 在空格上拆分字符串

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:20 26 4
gpt4 key购买 nike

我目前正在尝试将一个字符串拼接成一个多行字符串。正则表达式应该选择前面有 13 个字符的空格。

问题是 13 个字符的计数不会在先前选择的空白之后重置。因此,在前 13 个字符之后,正则表达式会选择每个空格。

我正在使用以下带有 13 个字符的 positive look-behind 的正则表达式:

(?<=.{13}) 

(末尾有一个空格)

您可以测试正则表达式 here和以下代码:

import java.util.ArrayList;
public class HelloWorld{

public static void main(String []args){
String str = "This is a test. The app should break this string in substring on whitespaces after 13 characters";

for (String string : str.split("(?<=.{13}) ")) {
System.out.println(string);
}
}
}

这段代码的输出如下:

This is a test.
The
app
should
break
this
string
in
substring
on
whitespaces
after
13
characters

但应该是:

This is a test.
The app should
break this string
in substring on
whitespaces after
13 characters

最佳答案

您实际上可以使用惰性限制量词来匹配这些行,然后替换为$0\n:

.{13,}?[ ]

参见 regex demo

IDEONE demo :

String str = "This is a test. The app should break this string in substring on whitespaces after 13 characters"; 
System.out.println(str.replaceAll(".{13,}?[ ]", "$0\n"));

注意模式匹配:

  • .{13,}? - 任何不是换行符的字符(如果您需要匹配任何字符,请使用 DOTALL 修饰符,但我怀疑您在当前情况下是否需要它),13至少多次,它可以匹配更多的字符,但最多匹配遇到的第一个空格
  • [ ] - 文字空间(字符类是多余的,但它有助于可视化模式)。

替换模式 - "$0\n" - 重新插入整个匹配值(它存储在组 0 中)并在其后附加一个换行符。

关于java - 在空格上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com