我被困在中间。
我正在创建包装类 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();
}
}
答案 0 :(得分:1)
除了omitEmptyStrings之外,你好像想要trimResults,不是吗?