Java 空字符串不能正常工作 我被卡在中间了。< / P>

Java 空字符串不能正常工作 我被卡在中间了。< / P>,java,guava,splitter,Java,Guava,Splitter,我正在为创建包装器类 com.google.common.base.Splitter 但是省略空字符串的方法不能正常工作 请把你精彩的指导给我 这是[来电者] public class Hoge { public static void main(String[] args) { Iterable<String> hoge = Splitter.on(",") .omitEmptyStrings()

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

但是省略空字符串的方法不能正常工作

请把你精彩的指导给我

这是[来电者]

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

 }
}
公共类Hoge{
公共静态void main(字符串[]args){
Iterable hoge=
拆分器。在(“,”)上
.省略空字符串()
.split(“ 福 ,,11,bar1 , ",;
}
}
结果是: [ 福 ]
[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();
 }
} 
公共最终类拆分器扩展对象{
私有静态最终拆分器拆分器=新拆分器();
私有静态com.google.common.base.Splitter-guavaSplitter;
私有静态对象分隔符chars=null;
私有静态布尔省略EmptyStringsFlg=false;
专用静态字符匹配器微调器=null;
/**
*默认构造
*此构造函数是私有的,用于拒绝访问
* 
*/
专用拆分器(){
}
/**
*将番石榴拆分器设置为此类番石榴拆分器
* 
*@param分离器匹配器
*@返回分离器
*/
打开公共静态拆分器(最终字符串分隔符){
if(StringUtils.isEmpty(分隔符)){
Splitter.guavaSplitter=null;
}否则{
瓜瓦斯普利特
=com.google.common.base.Splitter.on(分隔符);
Splitter.separatorChars=分离器;
} 
返回拆分器。拆分器;
}
/**
*将番石榴拆分器设置为此类番石榴拆分器
* 
*@返回分离器
*/
公共拆分器省略空字符串(){
if(null!=Splitter.guavaspliter){
if(String的Splitter.separatorChars实例){
if(null!=拆分器修剪器){
瓜瓦斯普利特
=com.google.common.base.Splitter.on(
(串)分离器。分离器
.省略空字符串()
.修剪结果(拆分器、修剪器);
}否则{
瓜瓦斯普利特
=com.google.common.base.Splitter.on(
(字符串)Splitter.separatorChars).省略EmptyStrings();
}
}
}
Splitter.ommitEmptyStringsFlg=true;
返回拆分器。拆分器;
}
/**
*拆分传入参数的{@link CharSequence}。
*
*@param sequence要拆分的字符序列
*@返回从参数分割的段的迭代。
*/
公共Iterable拆分(最终字符序列){
Iterable retList=新列表();
if(null!=序列&&null!=Splitter.guavaSplitter){
retList=spliter.guavaspliter.split(序列);
}
返回列表;
}
}
/**
* 
*返回字符串类型的一组元素的迭代器。
* 
*/
类列表实现了Iterable{
私有java.util.List splittedList
=新的java.util.ArrayList();
@凌驾
公共迭代器迭代器(){
返回此.splittedList.iterator();
}
} 

除了省略EmptyString之外,您似乎还需要trimResults,不是吗?

这在什么方面不起作用?它省略了“foo”和“11”之间的空字符串。你到底为什么要写这个包装?为什么不直接使用番石榴拆分器本身呢?还有,就像Jon说的那样,这似乎能按预期工作。这是很多代码,但它到底做了什么?如果你发布的输出无效,请发送给我们你期望收到的输出。以及拆分器类的用途。