V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
anzu
V2EX  ›  Java

Java 有没有像 Python 一样的 split?

  •  
  •   anzu · May 28, 2019 · 3614 views
    This topic created in 2537 days ago, the information mentioned may be changed or developed.

    比如分割空格字符串,python 是几个空字符串组成的数组,而 java 是空数组

    >>> "   ".split(" ")
    ['', '', '', '']
    
    10 replies    2019-05-29 09:14:15 +08:00
    Luckyray
        1
    Luckyray  
       May 28, 2019   ❤️ 1
    " ".split("\\ ",Integer.MAX_VALUE)这样可以。
    qwerthhusn
        2
    qwerthhusn  
       May 28, 2019
    用 Guava 的`com.google.common.base.Splitter.on(' ')`,String 的 split 接收的是一个正则表达式,有时在特殊字符条件下会用错。而 Guava 的那个完全就是按照字符去分,而且还跟你选项要不要把空串过滤掉,以及要不要对分割开的结果做 trim
    kcirtap
        3
    kcirtap  
       May 28, 2019 via iPhone
    查一下 google 很难吗
    palmers
        4
    palmers  
       May 28, 2019
    //4 个空格
    String blank = " ";
    String[] split = blank.split("", 4);
    Cbdy
        5
    Cbdy  
       May 28, 2019 via Android
    有的
    c4f36e5766583218
        6
    c4f36e5766583218  
       May 28, 2019   ❤️ 1
    有的,java 自带的不清楚。常用的第三方 jar 有
    org.apache.commons.lang3.StringUtils#splitPreserveAllTokens(str, separatorChar)
    org.apache.commons.lang3.StringUtils#splitByWholeSeparatorPreserveAllTokens(str, separator)
    或者 Guava(自己查)

    以 jdk8 源码来看,String#split 里分两类一个是 fastpath 快速分割,另一个就是 Pattern#split... 两类方法都有 resultSize--;这样的一段代码,原来循环剔除末尾空字符串。所以就产生了 lz 的结果。
    注意: java.lang.String#split(regex) 参数是一个正则字符串
    c4f36e5766583218
        7
    c4f36e5766583218  
       May 28, 2019
    resultSize--;是在 java.lang.String#split(regex, limit) limit==0 才生效,所以可以 input.split(" ", Integer.MAX_VALUE)
    c4f36e5766583218
        8
    c4f36e5766583218  
       May 28, 2019
    因 String#split 参数是一个正则字符串,如果你要按"abc"来分割会走到 Pattern#split,用正则来分割性能是没有纯字符处理方法快的,所以还是 commons-lang3/Guava 来处理比较好,比较一般项目都会用到这两个 jar/之一
    fzy0728
        9
    fzy0728  
       May 28, 2019
    tairan2006
        10
    tairan2006  
       May 29, 2019 via Android
    谷歌一下很难么 还专门发帖
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5385 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 114ms · UTC 08:05 · PVG 16:05 · LAX 01:05 · JFK 04:05
    ♥ Do have faith in what you're doing.