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

Java:字符串拆分():我希望它在结尾包含空字符串[重复]

太叔天宇
2023-03-14

我有以下字符串:

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n";

如果你只是打印这个,它会像这样输出(当然\n不会“逐字”打印):

\n
HERE\n
\n
THERE\n
\n
EVERYWHERE\n
\n
\n

调用方法split(“\n”)时,我希望获取新行(\n)字符之间的所有字符串,甚至是结尾的空字符串。

例如,如果我今天这样做:

String strArray[] = str.split("\n");

System.out.println("strArray.length - " + strArray.length);
for(int i = 0; i < strArray.length; i++)
    System.out.println("strArray[" + i + "] - \"" + strArray[i] + "\"");

我希望它像这样打印出来(输出A):

strArray.length - 8
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
strArray[6] - ""
strArray[7] - ""

当前,它是这样打印的(输出B),并且跳过任何结尾的空字符串:

strArray.length - 6
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"

如何使split()方法包括输出A中的空字符串?一、 当然,我可以编写多行代码,但在我浪费时间尝试实现之前,我想知道是否有一个简单的方法或额外的两行左右的代码可以帮助我。谢谢


共有3个答案

贺元明
2023-03-14

就我个人而言,我喜欢用番石榴来分割:

System.out.println(Iterables.toString(
   Splitter.on('\n').split(input)));

然后,如果要配置空字符串行为,可以执行以下操作:

System.out.println(Iterables.toString(
   Splitter.on('\n').omitEmptyStrings().split(input))); 
党权
2023-03-14

指定单参数split方法来忽略尾随的空字符串拆分,但采用“limit”参数的版本会保留它们,因此一种选择是使用具有较大限制的版本。

String strArray[] = str.split("\n", Integer.MAX_VALUE);
滑畅
2023-03-14
匿名用户

使用str.split(“\n”,-1)(带负的限制参数)。当split被赋予零或无limit参数时,它会丢弃尾随的空字段,当它被赋予正limit参数时,它会将字段数限制为该数字,但负限制意味着允许任何数量的字段,而不会丢弃尾随的空字段。这里记录了这一点,行为取自Perl。

 类似资料:
  • 问题内容: 我有以下字符串: 如果仅打印此内容,它将输出如下内容(当然不会“按字面意思”打印): 调用方法时,我想获取新行()字符之间的所有字符串,甚至最后还有空字符串。 例如,如果我今天这样做: 我希望它像这样打印出来(输出A): 当前,它以这种方式打印(输出B),并且所有结尾的空字符串都将被跳过: 如何使方法像输出A那样包含空字符串?我当然可以编写多行代码,但是想知道,在我浪费时间尝试实现这一

  • 扫描仪sc=新扫描仪(系统输入);字符串A=sc.nextLine();

  • 我是Java初学者,当我输入一些单词作为命令行参数时,我想颠倒句子的字符顺序。 这是我的代码。当我输入“这是一支笔”时,输出应该是“. nep a si sihT”。但是,这段代码的输出是“. nep a si sihT”。它在反转的句子末尾包含一个额外的空格。 有人知道我如何删除空间吗?

  • 我正在尝试使用拆分(“;”)将字符串转换为数组 。我这样做: 返回数组: 但我想得到回报: 字符串可以是“ggg;123;;w;;df”或“ggg;123;;ds;” 。 当“;”之间没有值时,我想在数组中创建一个空元素。这可能吗? 谢谢你的帮助!

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

  • 这个问题类似于我之前的问题拆分一个包含破折号和减号的字符串。但我问错了,然后它得到了稍微不同的语义,人们从这个角度回答(包括)。因此,与其修改这个问题,我认为最好是提出一个新问题。 我必须拆分一个包含连字符-减号和减号的字符串。我尝试根据Unicode字符(https://en.wikipedia.org/wiki/Hyphen#Unicode)进行拆分,但考虑到减号与连字符-减号相同。有什么方法