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中的Joiner和SplitterGuava
- Guava字串處理Joiner、SplitterGuava字串
- 學php之翻譯wordpress(2)PHP
- Serilog文件翻譯系列(三) - 基礎配置
- Serilog文件翻譯系列(一) - 入門指南
- Spring系列(零) Spring Framework 文件中文翻譯SpringFramework
- 《Web 推送通知》系列翻譯 | 引言&概覽Web
- Android基礎進階之EffectiveJava翻譯系列(第八章:異AndroidJava
- [Java 8 Tutorial翻譯系列]Java forEach詳解Java
- LWN 文章翻譯 - 名字空間實作系列
- Hadoop官網翻譯之HDFS ArchitectureHadoop
- 論機器翻譯之淺薄
- google guava集合之MultisetGoGuava
- 翻譯
- Serilog文件翻譯系列(四) - 結構化資料
- js逆向之——百度翻譯介面JS
- Hadoop官網翻譯之HDFS Users GuideHadoopGUIIDE
- 蝴蝶書-task2: 文字推理、摘要、糾錯 transformers實現翻譯 OpenAI翻譯 PyDeepLX翻譯 DeepLpro翻譯ORMOpenAI
- Ubuntu安裝劃詞翻譯軟體Goldendict 單詞翻譯 句子翻譯UbuntuGo
- Google guava原始碼之EventBusGoGuava原始碼
- 重試利器之Guava RetryingGuava
- 如何完成中文翻譯日文線上翻譯
- 螞蟻金服宮孫:guava探究系列之優雅校驗資料Guava
- 騰訊互動翻譯的坑爹翻譯
- Laravel 谷歌翻譯 /Bing 翻譯擴充套件包Laravel谷歌套件
- OpenCV翻譯專案總結二——Mat翻譯OpenCV
- Python-VidGear模組翻譯系列-01-Introduction介紹Python
- 重試利器之Guava-RetryerGuava
- 閱讀翻譯Mathematics for Machine Learning之2.8 Affine SubspacesMac
- 閱讀翻譯Mathematics for Machine Learning之2.7 Linear MappingsMacAPP
- 閱讀翻譯Mathematics for Machine Learning之2.5 Linear IndependenceMac
- 文件翻譯器怎麼用?如何翻譯Word文件?
- TailWind文件翻譯說明以及每日翻譯進度AI
- 有道雲詞典--翻譯/螢幕取詞翻譯
- 使用google翻譯 api 翻譯中文成其他語言GoAPI
- socket中文翻譯
- 歌詞翻譯
- bulma中文翻譯
- 翻譯軟體