在 Java 中,有没有一种说法 .. 例如“这个词是否包含三个 Z?”
我猜可能有一些聪明的 char 值?
String word = "pizzaz"
// Check if word contains three z's
boolean b = word.contains("SOME CLEVER CHAR VALUE??");
如果可能,在通过“次数”时是否可以使用整数值,即
int letterAmount = 3;
您可以使用正则表达式来做到这一点。按照你的例子:
word.matches(".*(z.*){3}.*")
如果您的字符串有 3 个 z,则返回 true。
计算单字符匹配的一种有点昂贵且迂回的方法如下:
String s = "pizzaz";
int numMatches = s.length() - s.replaceAll("z", "").length();
当"z"
从原始字符串的长度中减去所有 s 的字符串长度时,您最终得到z
原始字符串中 s 的数量。
boolean hasThreeZs = StringUtils.countMatches("pizzaz", "z") == 3;
或使用 Spring 的StringUtils版本
boolean hasThreeZs = StringUtils.countOccurrencesOf("pizzaz", "z") == 3;
根据字符串的大小,另一种选择是遍历字符串,计算字符数:
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) 时间。
String word = "pizzaz";
System.out.println(word.replaceAll("[^z]","").equals("zzz"));