(摘自 StringUtils)
public static int countMatches(String str, String sub) { if (isEmpty(str) || isEmpty(sub)) { return 0; } int count = 0; int idx = 0; while ((idx = str.indexOf(sub, idx)) != INDEX_NOT_FOUND) { count++; idx += sub.length(); } return count; } public static final int INDEX_NOT_FOUND = -1; public static boolean isEmpty(String str) { return str == null || str.length() == 0; }?
格式:grep -o "$SUB" <<<"$STR" | wc -l
错误:grep -c -o "$SUB" <<<"$STR"??? 注:开始以为这个可以,经过检验之后不行,因为-c参数只会打印匹配的的行数。
man grep 写道 -o, --only-matching[root@jfht ~]# x="This is a test"
[root@jfht ~]# grep -o "t" <<<"$x" | wc -l
???
2
[root@jfht ~]# grep -o "T" <<<"$x" | wc -l
1
[root@jfht ~]# grep -o "[tT]" <<<"$x" | wc -l
3
[root@jfht ~]# grep -o "t|T" <<<"$x" | wc -l
???
0
[root@jfht ~]# grep -o "t\|T" <<<"$x" | wc -l
3
?
格式:TMP=${STR//[^cC]}; ${#TMP}
意思是说将STR字符串中所有不是c和C的字符删除掉,保存到TMP中,那么得到TMP的长度就是c或C出现的次数
?
[root@jfht ~]# x="This is a test"?
??
[root@jfht ~]# y=${x//[^tT]}
[root@jfht ~]# echo $y
Ttt
[root@jfht ~]# echo ${#y}
3
?
?
本文链接:http://codingstandards.iteye.com/blog/1182146 ? (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)?
上节内容:Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
下节内容:Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头
?
?