我被困在中间。
我正在为创建包装器类
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,不是吗?