0
我卡在中間。omitEmptyStrings無法正常工作
我正在爲 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");
}
}
這是結果: [富]
[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();
}
}
以什麼方式不工作?它省略了「foo」和「11」之間的空字符串。 – 2010-07-03 13:37:35
爲什麼你寫這個包裝?爲什麼不使用Guava Splitter本身?此外,像喬恩說,這似乎是按預期工作。 – ColinD 2010-07-03 15:41:49
這是很多代碼,但它真的做了什麼? – 2010-07-03 23:40:14