当前位置: 首页 > 知识库问答 >
问题:

在空格上拆分字符串

通京
2023-03-14

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

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

我使用以下正则表达式,其正面后向为 13 个字符:

(?<=.{13}) 

(结尾有一个空格)

您可以在这里测试正则表达式和以下代码:

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);
        }
     }
}

代码的输出如下所示:

这是个测试。

应用
应在








13
个字符后的空格上以子字符串分隔此字符串

但应该是:

这是一个测试。
应用程序应该

13个字符之后的
空格上的子字符串中打破此字符串

共有3个答案

咸疏珂
2023-03-14

您可以使用。拆分并使用正则表达式来做到这一点。就像这样

line.split("\\s+"); 

这将溢出每个单词一个或多个空格。

韩豪
2023-03-14

您可以只匹配和捕捉空格前的13个字符,而不是拆分

Java 代码:

Pattern p = Pattern.compile( "(.{13}) +" );
Matcher m = p.matcher( text );

List<String> matches = new ArrayList<>();
while(m.find()) {
    matches.add(m.group(1));
}

它将产生:

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

正则表达式演示

鱼旺
2023-03-14

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

.{13,}?[ ]

查看regex演示

迪欧恩演示:

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中)并在它之后附加一个换行符。

 类似资料:
  • 问题内容: 因此,stdin将一串文本返回到列表中,并且多行文本都是列表元素。您如何将它们全部分割成一个单词? 想要的输出: 问题答案: 您可以使用简单的列表推导,例如: 这将产生:

  • 我有一个输入字符串像: 拆分后,我应该得到: 输出 规则: 格式类似于 值可以有除空格以外的任何特殊字符。 值可以有空格,如果在引号例如。或 我写了正则表达式,但引号内的引号搞砸了: 此外,我还尝试在上解析字符或拆分,但我面临着歧义,因为它们也可能在引号内。

  • 问题内容: 我想将字符串拆分为单个字符。所以我做: 但这产生了: 在其他语言(例如Ruby)中执行相同操作时,我不习惯使用第一个空字符串。它背后的逻辑是什么? 问题答案: 你为什么要用这个?使用可能会更好。 我知道一个会返回一个字符串数组,而另一个会给您一个字符数组。由于您希望分别使用每个字符,因此我假设这与您的代码无关。

  • 现在假设用户enterd AAA-222 结果将是 ps.拆分的部分应该包括空格。

  • 问题内容: 什么正则表达式模式需要我传递给 拆分成字符串使用的所有空格字符(子字符串数组,等)作为分隔符? 问题答案: 某些东西 这会将所有空白分组为分隔符。 因此,如果我有字符串: 这将产生字符串并省略和之间的空白。 正如VonC指出的那样,应该转义反斜杠,因为Java首先会尝试将字符串转义为特殊字符,然后将其发送给解析。你想要的是字面量,这意味着你需要通过。可能会造成一些混乱。 在相当于。

  • 我想用空格和特殊字符(如果有的话)来分割字符串。例如:用于表示移动交换中心(信号强度)。 目前我正在使用正则表达式来拆分字符串,但我无法同时实现空格和特殊字符的拆分。 更新代码: