guava翻譯系列之Splitter
使用Splitter類
另一個常見的操作就是解析一個以固定分隔符分隔的字串,並返回一個包含這個String的陣列,如果你需要去閱讀一個text檔案,你會經常要處理這種情況。但是String.split方法還有一些可以改進的地方,就像下面的例子所展示的:
`String testString = “Monday,Tuesday,,Thursday,Friday,,”;
//parts is [Monday, Tuesday, , Thursday,Friday]
String[] parts = testString.split(“,”);`
從上面的例子中你可以看到String.split方法預設將最後連個空的字串去除了,在有些情況下你是希望這麼做的。但是這樣並不是特別好,這樣的選擇應該留給程式設計師去處理。Splitter類可以協助去處理這樣的情況。 Splitter 類的作用剛好和Joiner相反,Spliter 類可以使用在 字元,固定的字串,正規表示式,CharMatcher類(下面我們會介紹這個類). 通過呼叫Splitter類的on方法,可以獲取Splitter例項,一旦建立了Splitter類,就可以呼叫split方法,spliter方法會返回一個包含了結果的可迭代物件.
`Splitter.on(`|`).split(“foo|bar|baz”);
Splitter splitter = Splitter.on(“d+”);`
- 上面的例子,我們看到一個Splitter例項使用`|`分隔,另外一個splitter使用了一個正規表示式
- Splitter 類還有一個選項可以將字串中的空白字元去除。 效果就想String.split。只要使用 trimResults()
`//Splits on `|` and removes any leading or trailing whitespace
Splitter splitter = Splitter.on(`|`).trimResults();`
- 就像Joiner類一樣,Splitter類是一個不可變類。所以千萬不要單獨的去呼叫trimResults方法,這樣並不能在原始的splitter類上起作用。 就像下面的這個例子:
`Splitter splitter = Splitter.on(`|`);
//Next call returns a new instance, does not
modify the original!
splitter.trimResults();
//Result would still contain empty elements
Iterable parts = splitter.split(“1|2|3|||”);`
- Joiner類有一個與之對應的MapJoiner,Splitter類也有一個MapSplitter類。MapSplitter的作用剛好和MapJoiner類的作用相反,具體的可以看一下下面的例子:
`//MapSplitter is defined as an inner class of Splitter
Splitter.MapSplitter mapSplitter = Splitter.on(“#”).
withKeyValueSeparator(“=”);`
就像我們所看到的一樣,MapSplitter的建立和MapJoiner類一樣,先建立一個Splitter類,然後通過一個指定一個特定的分隔符得到一個MapSplitter物件。
`@Test
public void testSplitter() {
String startString = “Washington D.C=Redskins#New York
City=Giants#Philadelphia=Eagles#Dallas=Cowboys”;
Map testMap = Maps.newLinkedHashMap();
testMap.put(“Washington D.C”,”Redskins”);
testMap.put(“New York City”,”Giants”);
testMap.put(“Philadelphia”,”Eagles”);
testMap.put(“Dallas”,”Cowboys”);
Splitter.MapSplitter mapSplitter =
Splitter.on(“#”).withKeyValueSeparator(“=”);
Map splitMap =
mapSplitter.split(startSring);
assertThat(testMap,is(splitMap));
}`
Splitter類使用回顧
上面的單元測試類,使用一個String物件,並且使用MapSplitter類建立一個LinkedHashMap例項。
這裡我們覆蓋了Joiner類和Splitter類的使用,這兩個類應該要放到開發人員的工具箱中。
相關文章
- guava翻譯系列之JoinerGuava
- guava之Joiner 和 SplitterGuava
- Guava 之 Joiner 和 SplitterGuava
- Guava翻譯之SmallFunctionGuavaFunction
- Guava文件翻譯之 Guava簡介Guava
- Guava文件翻譯之 ServiceGuava
- Guava文件翻譯之ListenableFutureGuava
- Guava字串處理Joiner、SplitterGuava字串
- (翻譯)Google Guava CacheGoGuava
- JAVA NIO 翻譯系列(七、FileChannel)Java
- StevGuo系列文章翻譯之Android系統屬性Android
- 《Web 推送通知》系列翻譯 | 引言&概覽Web
- 學php之翻譯wordpress(2)PHP
- LWN 文章翻譯 - 名字空間實作系列
- google guava集合之MultisetGoGuava
- 論機器翻譯之淺薄
- 深入理解Hystrix之文件翻譯
- Kafka之Purgatory Redesign Proposal (翻譯)Kafka
- Android基礎進階之EffectiveJava翻譯系列(第八章:異AndroidJava
- Spring系列(零) Spring Framework 文件中文翻譯SpringFramework
- [Java 8 Tutorial翻譯系列]Java forEach詳解Java
- LoadRunner函式中文翻譯系列之一--Action函式
- 翻譯
- Yurii談翻譯(五)怎樣翻譯更地道:so…that…的翻譯
- NServiceBus翻譯之Hosting(一):The NServiceBus Host
- Google guava原始碼之EventBusGoGuava原始碼
- 如何完成中文翻譯日文線上翻譯
- Yurii談翻譯(四)怎樣翻譯更地道:翻譯如鋪路
- Yurii談翻譯(九)怎樣翻譯更地道:冠詞a的翻譯
- Yurii談翻譯(十)怎樣翻譯更地道:最高階的翻譯
- 翻譯的未來:翻譯機器和譯後編譯編譯
- Ubuntu安裝劃詞翻譯軟體Goldendict 單詞翻譯 句子翻譯UbuntuGo
- Yurii談翻譯(六)怎樣翻譯更地道:“as somebody said…”的翻譯AI
- Yurii談翻譯(十三)怎樣翻譯更地道:It is…that…句型諺語的翻譯
- Yurii談翻譯(十四)怎樣翻譯更地道:否定句的翻譯
- 螞蟻金服宮孫:guava探究系列之優雅校驗資料Guava
- 蝴蝶書-task2: 文字推理、摘要、糾錯 transformers實現翻譯 OpenAI翻譯 PyDeepLX翻譯 DeepLpro翻譯ORMOpenAI
- Hadoop官網翻譯之HDFS ArchitectureHadoop