gpt4 book ai didi

java - String.split 处理空格和制表符的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 07:18:24 27 4
gpt4 key购买 nike

我有一个由制表符、空格和一些任意字符组成的字符串。下面的字符串由 space space tab tab 1 space tab -2 tab space + space 组成。

import java.util.Arrays;

String[] s = " 1 -2 + ".split("[\\s]+");
System.out.println(Arrays.toString(s));

使用正则表达式 [\s+] 运行 split,人们期望得到 [1, -2, +],但是我在我的机器上得到的返回数组(操作系统X,JDK1.6.0_37) 是 [, 1, -2, +]

事实证明,第一个元素只是“空白”(s[0].equals("") 返回 true),因此它应该与\s

我错过了什么?

最佳答案

如果在分割字符串时,字符串的第一个字符位于分隔符之间,则生成的数组的第一个元素始终是空字符串

这样看来,您的字符串始终以空字符串开头。因此,您的分隔符 - \s+ 会将 "a" 字符串(注意前导空格)分为两部分,首先是在 \s+ 之前,其中是空字符串 "",其后是一个a

所以,你得到的输出是显而易见的。

It turns out the first element is simply "blank" (s[0].equals("") returns true) and so it should have been matched by \s.

不,不应该这样。空格不是空字符串。它们之间是有区别的。

关于java - String.split 处理空格和制表符的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615741/

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