Java で、たとえば「この単語には Z が 3 回含まれていますか?」という言い方はありますか?
巧妙な 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"));