我被困在中间。

我正在为创建包装器类
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]

以下是我的包装器课程。

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();
 }
}

最佳答案

除了omitEmptyStrings之外,您似乎还想要trimResults,不是吗?

10-04 12:20