split(“+”)和split(“”)是不同的

时间:2015-09-21 04:26:11

标签: java split whitespace

我想删除字符串中的真空。

String input = "java example.java       aaa     bbb";
String[] temp = input.trim().split(" ");

结果是

  

java
example.java半年期 BBB

但我想要结果

  

的java
example.java
AAA BBB

所以,我使用拆分(“+”)。结果是对的。 但我不明白,怎么做分裂(“+”)。

8 个答案:

答案 0 :(得分:5)

split()采用正则表达式作为其论点。 " +"在正则表达式中表示"前一个元素中的一个或多个"。因此分裂" +"将分成一个或多个空格"。

答案 1 :(得分:3)

  • 在第一种情况下,它是正常的字符串拆分。
  • 在第二种情况下,您接受了regular expression的帮助。

来自split()方法的文档

  

将此字符串拆分为给定正则表达式的匹配项。

一个简单的空间没有+所有的表达式。

string.split(" +")将拆分分隔符设置为one or more of the previous element,在您的情况下,可以是任意数量的空格字符("")。

答案 2 :(得分:1)

为空白提供正则表达式的最佳方法是使用\\s+。这是一个或多个空间。

String input = "java example.java       aaa     bbb";
String[] temp = input.trim().split("\\s+");
  

如果您只期望单个空格,请使用\\s作为单个空格。

     

对于多个空格,请始终使用\\s+,这就是您的情况。

答案 3 :(得分:1)

String.split()的参数是regex或正则表达式。传递" "意味着它将匹配正好一个空间,传递" +"表示它将匹配一个或多个空格。

这里有关于正则表达式的好教程:http://www.regular-expressions.info/

答案 4 :(得分:0)

正则表达式中的“+”表示前一个或多个,因此“+”表示一个或多个空格。 请参阅regex syntax

分裂方法中的参数是正则表达式而不是字符串,因为大多数人认为。请参阅split

答案 5 :(得分:0)

参数是regular expression,用于丢弃的项目之间的文本。

使用" "时,字符串会被剪切为"java", " ", "example.java", " ", "", " ", "", " ", "", " ", "", " ", "", " ", "", " ", "aaa", " ", "", " ", "", " ", "", " ", "", " ", "bbb",然后" "被丢弃,留下"java", "example.java", "", "", "", "", "", "", "aaa", "", "", "", "", "bbb"。如果一行中有多个空格,则每个空格分别与" "模式匹配,并且每对空格之间都有一个空字符串""

对于" +",这意味着任何一个或多个空格的组都是单个匹配。因此字符串被剪切为"java", " ", "example.java", " ", "aaa", " ", "bbb",并且空格组被丢弃,留下"java", "example.java", "aaa", "bbb"

答案 6 :(得分:0)

我建议使用string.split("\\s+")\\s是任意white-space字符(空格,标签,输入...)

答案 7 :(得分:0)

.split("")和.split(+)之间的区别是:

正则表达式" ":

  • 字面上匹配空格字符。

正则表达式(" +")

  • 匹配单个空白字符(制表符,换行符,回车符, 垂直标签,形式提供)在一个和无限时间之间。 (贪婪)

短:

  

" "将数组拆分为一个空格字符。

     

/ \ s /将数组拆分为各种空白字符

     

' +'在一个和无限制的时间之间匹配