我想要删除字符串中的空格。
String input = "java example.java aaa bbb";
String[] temp = input.trim().split(" ");
那个结果是
java
example.java
aaa
bbb
但我希望得到的结果是
java
example.java
aaa
bbb
因此,我使用了 split(" +")。 结果是正确的。 但我不理解 split(" +") 是如何实现的。
我想要删除字符串中的空格。
String input = "java example.java aaa bbb";
String[] temp = input.trim().split(" ");
那个结果是
java
example.java
aaa
bbb
但我希望得到的结果是
java
example.java
aaa
bbb
因此,我使用了 split(" +")。 结果是正确的。 但我不理解 split(" +") 是如何实现的。
来自split()方法的文档:
在给定正则表达式的匹配项周围拆分此字符串。
简单的空格没有任何表达式,而+
则有。
string.split(" +")
将分割定界符设置为一个或多个前一个元素
,在您的情况下可以是任意数量的空格字符 (" ")。
\\s+
。这表示一个或多个空格。String input = "java example.java aaa bbb";
String[] temp = input.trim().split("\\s+");
\\s
表示单个空格。对于多个空格,请始终使用\\s+
,这就是在您的情况下发生的事情。该参数是用于在项目之间被丢弃的文本的正则表达式。
使用" "
,字符串被分割为"java", " ", "example.java", " ", "", " ", "", " ", "", " ", "", " ", "", " ", "", " ", "aaa", " ", "", " ", "", " ", "", " ", "", " ", "bbb"
,然后将" "
去掉,留下"java", "example.java", "", "", "", "", "", "", "aaa", "", "", "", "", "bbb"
。当有多个连续的空格时,每个空格都单独匹配" "
模式,并且每对空格之间有一个空字符串""
。
使用" +"
,这意味着任何一个或多个空格组成的组合都是一个匹配项。因此,字符串被分割为"java", " ", "example.java", " ", "aaa", " ", "bbb"
,并且空格组被去掉,留下"java", "example.java", "aaa", "bbb"
。
我建议使用string.split("\\s+")
,其中\\s
代表任何空白字符
(空格、制表符、换行符等)
" ":
- 匹配空格字符字面上。(" +")
:" " 在一个单独的空格字符处拆分数组。
/\s/ 可以在任何种类的空白字符处拆分数组。
'+' 匹配一次或多次。
+
表示“前一个表达式出现一次或多次”,例如在您的情况下表示一个或多个空格。 - Andreas