在Java中,有没有办法说...例如“这个词是否包含Z三次?”
我猜可能会有一些聪明的char值?
String word = "pizzaz"
// Check if word contains three z's
boolean b = word.contains("SOME CLEVER CHAR VALUE??");
如果可能,在通过“次数”时可以使用整数值,即
int letterAmount = 3;
答案 0 :(得分:6)
您可以使用正则表达式来执行此操作。按照你的例子:
word.matches(".*(z.*){3}.*")
如果您的字符串有3个z,则返回true。
答案 1 :(得分:5)
计算单字符匹配的一种有点昂贵且迂回的方法如下:
String s = "pizzaz";
int numMatches = s.length() - s.replaceAll("z", "").length();
如果从原始字符串的长度中减去删除了所有"z"
的字符串的长度,则最终会得到原始字符串中z
的数量。
答案 2 :(得分:2)
boolean hasThreeZs = StringUtils.countMatches("pizzaz", "z") == 3;
或使用Spring的StringUtils
版本boolean hasThreeZs = StringUtils.countOccurrencesOf("pizzaz", "z") == 3;
答案 3 :(得分:0)
根据字符串的大小,另一个选项是遍历字符串,计算字符:
public static boolean contansCharCount(String s, char targetC, int targetCount) {
char[] sArray = s.toCharArray();
int actualCount = 0;
for(char c : sArray)
actualCount = (c == targetC) ? actualCount + 1 : actualCount;
return (actualCount == targetCount);
}
这需要O(N)时间。
答案 4 :(得分:0)
String word = "pizzaz";
System.out.println(word.replaceAll("[^z]","").equals("zzz"));