java - Java String split() 的意外行为

标签 java parsing split whitespace

我正在尝试使用字符串拆分函数拆分字符串,这是一个示例:

    String[] list = "   Hello   ".split("\\s+");
    System.out.println("String length: " + list.length);
    for (String s : list) {
        System.out.println("----");
        System.out.println(s);
    }

这是输出:

String length: 2
----

----
Hello

如您所见,前导空格成为 String 数组中的空元素,但尾随空格却不是。

有谁知道为什么吗?

最佳答案

您需要使用other split method它指定限制并指定限制为 -1

String[] list = "   Hello   ".split("\\s+", -1);

为了保留尾随空格,- 默认行为是根据 javadoc 省略尾随空格。

<小时/>

编辑(answer for comment):

要修剪前导空格,您可以在拆分字符串之前去掉前导空格

String str = "   Hello   ".replaceAll("^\\s+", "");
String[] list = str.split("\\s+", -1);

关于java - Java String split() 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006636/

相关文章:

java - 如何使用 Azure DevOps 发布管道将 Java 应用程序部署到 Tomcat 8 App Service?

parsing - EDI 新手需要有关选择翻译器的建议

c++ - 如何解析结构化格式?

mysql - MySQL中的字符串分割函数

python - 通过分隔符将 Pandas Series 拆分为 DataFrame

java - 为什么编译器认为 `byte...` 和 `char...` 不明确

java - 在特定 JTable 单元格中添加的 JComboBox 不呈现

java - 获取异常 org.openqa.selenium.NoSuchElementException : No link found with text

Java Html 解析器和结束标签

javascript:拆分字符串(但保留空格)