String utilities 字符串工具类
Joiner
将被分隔符分割的字符串序列串联起来,可能会产生些不必要的麻烦, 如果你的字符串序列中包含几个 null,
那连接操作将会更为困难, 那么 Fluent 风格的 [Joiner
] 类就可以将连接操作变得非常容易.
// skipNulls() 跳过 null , 忽略 null 在字符串中发挥的作用
Joiner joiner = Joiner.on("; ").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");
代码返回了 “Harry; Ron; Hermione” 字符串, 另外, 使用 useForNull(String)
方法,
你可以使用任意字符串来代替 null.
// 使用 useForNull(String) 方法,使用自定义字符串代替 null
Joiner joiner = Joiner.on(";").useForNull("Hi");
return joiner.join("Harry", null, "Ron", "Hermione");
// 代码将会返回 Harry", "Hi", "Ron", "Hermione"
你也可以在对象中使用 Joiner
, 这时, Joiner 会将对象的 toString()
值连接起来.
Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"
警告: joiner 的实例总是不可变的(具体请参考joiner的构造以及具体方法),
也就是使用 joiner 的构造方法总会返回一个新的 Joiner
对象, 这使 Joiner
是线程安全的,
所以你可以将其定义为一个 static final
常量.
Splitter 分割(隔)
在 Java 内建的工具类中,字符串拆分工具总有着一些莫名奇妙的特性. 举个栗子,
String.split
偷偷抛弃了结尾的分隔符, StringTokenizer
则只关心五种空白字符(” “,”\t”,”\n”,”\r”,”\f”) 不管其他.
问: 执行",a,,b,".split(",")
之后, 将会返回什么?
"", "a", "", "b", ""
null, "a", null, "b", null
"a", null, "b"
"a", "b"
- 以上都不对
正确答案是第五项: 以上都不对. "", "a", "", "b"
才是最终的返回结果,只有结尾的空字符串被忽略了.
[