# 功能
处理字符串
# 程序示例
package com.example.google.guava.demo.string; | |
import com.google.common.base.CharMatcher; | |
/** | |
* <p> | |
* <code>CharMatcherTest</code> | |
* </p> | |
* Description: | |
* | |
* @author Mcchu | |
* @date 2017/10/23 12:14 | |
*/ | |
public class CharMatcherTest { | |
public static void main(String[] args) { | |
// 1. 获取字符串中数字 | |
String str1 = "mahesh123ff87f"; | |
String result1 = CharMatcher.digit().retainFrom(str1); | |
System.out.println("1.获取字符串中数字:"+result1); | |
// 2. 把多个空格替换,并去掉首位的空格 | |
String str2 = " Mahesh Parashar "; | |
String result2 = CharMatcher.whitespace().trimAndCollapseFrom(str2, ' '); | |
System.out.println("2.把多个空格替换,并去掉首位的空格"+result2); | |
// 3. 去掉转义字符 (\t,\n,\b...) | |
String str3 = " ab\tcd\nef\bg"; | |
String result3 = CharMatcher.javaIsoControl().removeFrom(str3); | |
System.out.println("3.去掉转义字符"+result3); | |
// 4. 把所有的数字用 "*" 代替 | |
String str4 = "124abc85dds"; | |
String result4 = CharMatcher.javaDigit().replaceFrom(str4,"*"); | |
System.out.println("4.替换数字:"+result4); | |
// 5. 获取所有的数字和小写字母 | |
String str5 = "124abc85ddsAF1HNsd"; | |
String result5 = CharMatcher.javaDigit().or(CharMatcher.javaLowerCase()).retainFrom(str5); | |
System.out.println("5.获取所有的数字和小写字母:"+result5); | |
// 6. 获取所有的大写字母 | |
String result6 = CharMatcher.javaUpperCase().retainFrom(str5); | |
System.out.println("6.获取所有的大写字母:"+result6); | |
// 7. 获取所有单字节长度的符号 | |
String str7 = ",dg,123AH中国"; | |
String result7 = CharMatcher.singleWidth().retainFrom(str7); | |
System.out.println("7.获取所有单字节长度的符号:"+result7); | |
// 8. 获取字母 | |
String str8 = "FirstName LastName +1 123 456 789 !@#$%^&*()_+|}{:\"?><"; | |
String result8 = CharMatcher.javaLetter().retainFrom(str8); | |
System.out.println("8.获取字母:"+result8); | |
// 9. 获取字母和数字 | |
String result9 = CharMatcher.javaLetterOrDigit().retainFrom(str8); | |
System.out.println("9.获取字母和数字:"+result9); | |
// 10. 出现次数统计 | |
Integer count10 = CharMatcher.any().countIn(str8); | |
System.out.println("10.出现次数:"+count10); | |
// 11. 数字出现次数 | |
Integer count11 = CharMatcher.digit().countIn(str8);; | |
System.out.println("11.数字出现次数:"+count11); | |
// 12. 获得除大写字母外其他所有字符 | |
String result12 = CharMatcher.javaLowerCase().negate().retainFrom(str8); | |
System.out.println("12.获得除大写字母外其他所有字符:"+result12); | |
// CharMatcher 本身提供了很多 CharMatcher 实现类,如下: | |
// ANY: 匹配任何字符 | |
// ASCII: 匹配是否是 ASCII 字符 | |
// BREAKING_WHITESPACE: 匹配所有可换行的空白字符 (不包括非换行空白字符,例如 "\u00a0") | |
// DIGIT: 匹配 ASCII 数字 | |
// INVISIBLE: 匹配所有看不见的字符 | |
// JAVA_DIGIT: 匹配 UNICODE 数字,使用 Character.isDigit () 实现 | |
// JAVA_ISO_CONTROL: 匹配 ISO 控制字符,使用 Charater.isISOControl () 实现 | |
// JAVA_LETTER: 匹配字母,使用 Charater.isLetter () 实现 | |
// JAVA_LETTER_OR_DIGET: 匹配数字或字母 | |
// JAVA_LOWER_CASE: 匹配小写 | |
// JAVA_UPPER_CASE: 匹配大写 | |
// NONE: 不匹配所有字符 | |
// SINGLE_WIDTH: 匹配单字宽字符,如中文字就是双字宽 | |
// WHITESPACE: 匹配所有空白字符 | |
// CharMatcher is (char match): 返回匹配指定字符的 Matcher | |
// CharMatcher isNot (char match): 返回不匹配指定字符的 Matcher | |
// CharMatcher anyOf (CharSequence sequence): 返回匹配 sequence 中任意字符的 Matcher | |
// CharMatcher noneOf (CharSequence sequence): 返回不匹配 sequence 中任何一个字符的 Matcher | |
// CharMatcher inRange (char startInclusive, char endIncludesive): 返回匹配范围内任意字符的 Matcher | |
// CharMatcher forPredicate (Predicate<? super Charater> predicate): 返回使用 predicate 的 apply () 判断匹配的 Matcher | |
// CharMatcher negate (): 返回以当前 Matcher 判断规则相反的 Matcher | |
// CharMatcher and (CharMatcher other): 返回与 other 匹配条件组合做与来判断的 Matcher | |
// CharMatcher or (CharMatcher other): 返回与 other 匹配条件组合做或来判断的 Matcher | |
// boolean matchesAnyOf (CharSequence sequence): 只要 sequence 中有任意字符能匹配 Matcher, 返回 true | |
// boolean matchesAllOf (CharSequence sequence): sequence 中所有字符都能匹配 Matcher, 返回 true | |
// boolean matchesNoneOf (CharSequence sequence): sequence 中所有字符都不能匹配 Matcher, 返回 true | |
// int indexIn (CharSequence sequence): 返回 sequence 中匹配到的第一个字符的坐标 | |
// int indexIn (CharSequence sequence, int start): 返回从 start 开始,在 sequence 中匹配到的第一个字符的坐标 | |
// int lastIndexIn (CharSequence sequence): 返回 sequence 中最后一次匹配到的字符的坐标 | |
// int countIn (CharSequence sequence): 返回 sequence 中匹配到的字符计数 | |
// String removeFrom (CharSequence sequence): 删除 sequence 中匹配到到的字符并返回 | |
// String retainFrom (CharSequence sequence): 保留 sequence 中匹配到的字符并返回 | |
// String replaceFrom (CharSequence sequence, char replacement): 替换 sequence 中匹配到的字符并返回 | |
// String trimFrom (CharSequence sequence): 删除首尾匹配到的字符并返回 | |
// String trimLeadingFrom (CharSequence sequence): 删除首部匹配到的字符 | |
// String trimTrailingFrom (CharSequence sequence): 删除尾部匹配到的字符 | |
// String collapseFrom (CharSequence sequence, char replacement): 将匹配到的组 (连续匹配的字符) 替换成 replacement | |
// String trimAndCollapseFrom (CharSequence sequence, char replacement): 先 trim 在 replace | |
} | |
} |
# 测试结果
1.获取字符串中数字:12387
2.把多个空格替换,并去掉首位的空格Mahesh Parashar
3.去掉转义字符 abcdefg
4.替换数字:***abc**dds
5.获取所有的数字和小写字母:124abc85dds1sd
6.获取所有的大写字母:AFHN
7.获取所有单字节长度的符号:,dg,123AH
8.获取字母:FirstNameLastName
9.获取字母和数字:FirstNameLastName1123456789
10.出现次数:54
11.数字出现次数:10
12.获得除大写字母外其他所有字符:FN LN +1 123 456 789 !@#$%^&*()_+|}{:"?><
# 参考
http://www.yiibai.com/guava/guava_charmatcher.html
http://blog.csdn.net/victor_cindy1/article/details/52073155