omitEmptyStrings无法正常工作

时间:2010-07-03 13:28:19

标签: java guava splitter

我被困在中间。

我正在创建包装类 com.google.common.base.Splitter。

但omitEmptyStrings方法无效。

请给我一些很棒的指导。

这是[来电者]

public class Hoge {
 public static void main(String[] args) {
     Iterable<String> hoge =  
         Splitter.on(",")  
               .omitEmptyStrings()  
               .split(" foo ,,11,bar1 , quux");

 }
}

这是结果: [foo]
[11]
[bar1]
[quux]

以下是我的Wrapper课程。

public final class Splitter extends Object {

 private static final Splitter splitter = new Splitter();

 private static com.google.common.base.Splitter guavaSplitter;

 private static Object separatorChars = null;

 private static boolean omitEmptyStringsFlg = false;

 private static CharMatcher trimmer = null;

 /**
  * Default Construction
  * This constructor is private to deny access
  * 
  */
 private Splitter() {
 }
  /**
   * setting guava Splitter to this class guavaSplitter
   * 
   * @param separatorMatcher
   * @return Splitter
   */
  public static Splitter on(final String separator) {

 if (StringUtils.isEmpty(separator)) {
  Splitter.guavaSplitter = null;
 } else {
  Splitter.guavaSplitter
      = com.google.common.base.Splitter.on(separator);

  Splitter.separatorChars = separator;
 } 

 return Splitter.splitter;

  }

 /**
  * setting guava Splitter to this class guavaSplitter
  * 
  * @return Splitter
  */

 public Splitter omitEmptyStrings() {

  if (null != Splitter.guavaSplitter) {

   if (Splitter.separatorChars instanceof String) {
    if (null != Splitter.trimmer) {
     Splitter.guavaSplitter
         = com.google.common.base.Splitter.on(
       (String)Splitter.separatorChars)
       .omitEmptyStrings()
       .trimResults(Splitter.trimmer);

    } else {
     Splitter.guavaSplitter
         = com.google.common.base.Splitter.on(
       (String)Splitter.separatorChars).omitEmptyStrings();

    }

   }

  }
  Splitter.omitEmptyStringsFlg = true;
     return Splitter.splitter;
 }

  /**
   * Splits the {@link CharSequence} passed in parameter.
   *
   * @param sequence the sequence of characters to split
   * @return an iteration over the segments split from the parameter.
   */
  public Iterable<String> split(final CharSequence sequence) {
 Iterable<String> retList = new List();

    if (null != sequence && null != Splitter.guavaSplitter) {
     retList = Splitter.guavaSplitter.split(sequence);

    }

    return retList;
  }

}


/**
 * 
 * Returns an iterator over a set of elements of type String.
 * 
 */
class List implements Iterable<String> {

 private java.util.List<String> splittedList
  = new java.util.ArrayList<String>();

 @Override
 public Iterator<String> iterator() {
  return this.splittedList.iterator();
 }
} 

1 个答案:

答案 0 :(得分:1)

除了omitEmptyStrings之外,你好像想要trimResults,不是吗?