标签:Splitter null CharMatcher trimResults returns split 工具 guava Strings
有时候我们在项目中需要拼接一组字符串,中间用分隔符连接。
但使用jdk,你不得对最后一个元素和前面的其他元素进行区分。
使用guava提供的工具类让这一切变得简单。
一、拼接字符串
Joiner joiner = Joiner.on("; ").skipNulls(); return joiner.join("Harry", null, "Ron", "Hermione"); //Harry; Ron; Hermione Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"
二、拆分字符串
拆分字符串是拼接字符串的逆向操作。jdk内置了对拆分字符串的操作方法String.split().
但当你面对的是不规则的内容时,这个工作并不简单。比如
",a,,b,".split(",")返回什么?
"", "a", "", "b", ""
null, "a", null, "b", null
"a", null, "b"
"a", "b"
- 以上都不是
正确答案是5,实际返回: "", "a", "", "b"
但是这真是我们想要的结果吗?
guava包Splitter允许你对拆分行为进行完全的控制以规避令人迷惑的结果。
Splitter.on(',') .trimResults() .omitEmptyStrings() .split("foo,bar,, qux"); //[foo, bar, qux]
更多选择
Base Factories
Method | Description | Example |
---|---|---|
Splitter.on(char) |
Split on occurrences of a specific, individual character. | Splitter.on(';') |
Splitter.on(CharMatcher) |
Split on occurrences of any character in some category. | Splitter.on(CharMatcher.BREAKING_WHITESPACE) Splitter.on(CharMatcher.anyOf(";,.")) |
Splitter.on(String) |
Split on a literal String . |
Splitter.on(", ") |
Splitter.on(Pattern) Splitter.onPattern(String) |
Split on a regular expression. | Splitter.onPattern("\r?\n") |
Splitter.fixedLength(int) |
Splits strings into substrings of the specified fixed length. The last piece can be smaller than length , but will never be empty. |
Splitter.fixedLength(3) |
Modifiers
Method | Description | Example |
---|---|---|
omitEmptyStrings() |
Automatically omits empty strings from the result. | Splitter.on(',').omitEmptyStrings().split("a,,c,d") returns "a", "c", "d" |
trimResults() |
Trims whitespace from the results; equivalent to trimResults(CharMatcher.WHITESPACE) . |
Splitter.on(',').trimResults().split("a, b, c, d") returns "a", "b", "c", "d" |
trimResults(CharMatcher) |
Trims characters matching the specified CharMatcher from results. |
Splitter.on(',').trimResults(CharMatcher.is('_')).split("_a ,_b_ ,c__") returns "a ", "b_ ", "c" . |
limit(int) |
Stops splitting after the specified number of strings have been returned. | Splitter.on(',').limit(3).split("a,b,c,d") returns "a", "b", "c,d" |
标签:Splitter,null,CharMatcher,trimResults,returns,split,工具,guava,Strings 来源: https://www.cnblogs.com/wangbin2188/p/15881873.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。