【问题标题】:Split string with specified separator without omitting empty elements使用指定的分隔符拆分字符串而不省略空元素
【发布时间】:2011-06-01 11:56:36
【问题描述】:

我现在正在使用

StringUtils.split(String str, char separatorChar)

用指定的分隔符(,)分割输入字符串。

输入数据示例:

a,f,h

输出

String[] { "a", "f", "h" }

但是有以下输入:

a,,h

它只返回

String[] { "a", "h" }

我需要的只是空字符串对象:

String[] { "a", "", "h" }

我怎样才能做到这一点?

【问题讨论】:

    标签: java string split


    【解决方案1】:

    如果您要使用StringUtils,请调用splitByWholeSeparatorPreserveAllTokens() 方法而不是split()。

    【讨论】:

      【解决方案2】:

      你可以直接使用String.split(..)方法,不需要StringUtils:

      "a,,h".split(","); // gives ["a", "", "h"]
      

      【讨论】:

      • 请注意,String.split 仍然会忽略数组末尾的空字符串,例如,"a,h,".split(",") 给出的是["a","h"],而不是["a","h",""]。要从末尾获取空字符串,您可以提供一个负数作为 split 的第二个参数。 (docs.oracle.com/javase/6/docs/api/java/lang/…) 有时 Java 很奇怪...
      【解决方案3】:

      你可以使用这个重载的 split()

      public String[] split(String regex,
                        int limit)
      

      limit 参数控制应用模式的次数,因此会影响结果数组的长度。如果限制 n 大于零,则模式将最多应用 n - 1 次,数组的长度将不大于 n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入

      更多信息请访问split

      【讨论】:

        【解决方案4】:

        普通的String.split 做你想做的事。

        "a,,h".split(",") 产生 { "a", "", "h" }。

        ideone.com demonstration.

        【讨论】:

          【解决方案5】:

          用指定的分隔符分割字符串而不省略空元素。

          使用方法org.apache.commons.lang.StringUtils.splitByWholeSeparatorPreserveAllTokens()

          优于其他不同类别的方法:

          • 它不会跳过任何子字符串或空字符串,并且适用于所有字符或字符串作为分隔符。
          • 它还具有多态形式,我们可以在其中指定给定字符串预期的最大标记数。

          String.Split() 方法将正则表达式作为参数,因此它适用于某些字符作为分隔符,但并非所有 eg: 管道(|)等。我们必须将转义字符附加到管道(|),以便它可以正常工作。

          Tokenizer(字符串或流) - 它跳过delimiter's之间的空字符串。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-16
            • 2011-12-26
            • 1970-01-01
            相关资源
            最近更新 更多