本片内容收录在我的在线笔记 java-note-for-free 中。
笔记源文件在 gitee 中。
对字符串的操作常见的有:
- 字符串的判断
- 字符串的拼接
- 字符串的拆分
- 字符串内容的替换
对字符串的判断:Strings 类
import com.google.common.base.Strings;
-
isNullOrEmpty(...)
判断字符串是否为Null或空("")
// Strings.isNullOrEmpty(input) demo String input = ""; boolean isNullOrEmpty = Strings.isNullOrEmpty(input); System.out.println("input " + (isNullOrEmpty ? "is" :"is not") + " null or empty.");
对字符串作拼接:Spliter 类
import com.google.common.base.Joiner;
guava 为我们提供了 Joiner
类来做字符串的合并
-
一个简单的示例:
// "hello world" Joiner.on("").join(new String[]{"hello", "world"});
上面例子中我们使用
Joiner.on(" ").join(xx)
来合并字符串。很简单也很有效。 -
另一个例子:
StringBuffer sb = new StringBuffer(""); // "hello, world, goodbye" Joiner.on(", ").appendTo(sb, Lists.newArrayList("hello", "world", "goodbye"));
对字符串的拆分:Splitter
import com.google.common.base.Splitter;
-
一个简单的例子:
// 拆分出 4 个字符串:"hello", " world", " ", " goodbye" Iterable<String> ret = Splitter.on(",").split("hello, world, , goodbye");
-
on()
方法用于指明分隔符 -
split()
方法表示对目标字符串进行拆分。split()
方法还有一个splitToList()
的“兄弟”方法 。
注意,由于目标字符串的原因,上述代码拆分的结果中有两样“讨厌”的东西
-
空格
-
空字符串
-
-
对上述例子的“改进”:
// 拆分出 3 个字符串:"hello", "world", "goodbye" Iterable<String> ret = Splitter.on(",") .omitEmptyStrings() .trimResults() .split("hello, world, , goodbye");
多出来的两个方法调用:
-
omitEmptyStrings()
表示忽略拆出来的空字符串 -
trimResults()
方法表示要对每个拆分结果做 trim 操作
-
on()
方法有一个更高级的支持正则表达式的“兄弟”方法:onPattern()
:
我们先看一个基本的拆分例子:
// 拆除分出 4 个字符串:"hello" "word" "世界" "和平"
List<String> splitResults = Splitter.onPattern("[,,]{1,}")
.trimResults()
.omitEmptyStrings()
.splitToList("hello,world,,世界, 和平");
字符串内容的替换:CharMatcher
import com.google.common.base.CharMatcher;
CharMatcher 提供了多种对字符串处理的方法, 它的主要意图有:
- 找到匹配的字符
- 处理匹配的字符
通过 CharMatcher 对字符串进行操作(包括但不仅包括“替换”),也是分为两个步:选中/匹配字符串中的某部分,而后进行某种操作。
-
一个简单的例子:
// "hell wrld" ret = CharMatcher.is('o').removeFrom("hello world");
-
is()
方法表示所需要选中/匹配的内容 -
removeFrom()
表示对目标字符串中所选中的内容进行的操作。这个例子中是删除。
// "heLLo worLd" 这个例子中的操作是替换 ret = CharMatcher.is('l').replaceFrom("hello world", 'L');
-
CharMatcher 提供的选中/匹配方法包括但不仅包括 is ( ),提供的操作方法包括但不仅包括 removeFrom ( ) 和 replaceFrom ( )
网友评论