Java 的 split 方法为什么要把后面的空字符串丢弃掉?

zsdroid 7月前 65

String a = "1,2,3,,,,,";
System.out.println(a.split(",").length);//3
最新回复 (12)
  • ymmud 7月前
    引用 2
    split(",", -1);
  • xtreme1 7月前
    引用 3
    https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-int-
    a.split(",", -1);
  • lihongjie0209 7月前
    引用 4
    你确定是
    这个空字符串“ ”

    还是这个空字符串 “”
  • Rwing 7月前
    引用 5
    C# 欢迎您 :)
    https://docs.microsoft.com/zh-cn/dotnet/api/system.string.split?view=netcore-3.0#System_String_Split_System_String___System_StringSplitOptions_

    参数
    separator
    String[]
    分隔此字符串中子字符串的字符串数组、不包含分隔符的空数组或 null。
    options
    StringSplitOptions
    要省略返回的数组中的空数组元素,则为 RemoveEmptyEntries ;要包含返回的数组中的空数组元素,则为 None。
  • conn4575 7月前
    引用 6
    java 的 split 和其他语言的很不一样,各种反直觉,不知道设计者怎么想的
  • gaius 7月前
    引用 7
    用 guava 的 splitter
  • qwerthhusn 7月前
    引用 8
    从来不用这个,而且这个方法的参数是一个正则表达式,比如"1.2.3.4".split(".")是得不到结果的,必须要 split("\\.")
    都是用 Guava 的 Splitter,可以明确指定按子串分割,按字符分割或者按正则分割。而且结果的话可以选择过滤或者不过滤空串
  • lxk11153 7月前
    引用 9
    感觉这个方法源码不难懂,看下就行了
  • annielong 7月前
    引用 10
    感觉挺好,不用再处理空字符,感觉用 split 的场景大多数是只要非空字符的
  • ragnaroks 7月前
    引用 11
    没有 java 的反人类如何衬托出其他语言的优雅..
  • watzds 7月前
    引用 12
    很奇怪的设计,好像后面的会丢掉,前面的会留着

    ,,1,2,3,,
  • watzds 7月前
    引用 13
    @annielong 其他位置还是会有空的
  • 游客
    14
返回