-2

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;

4

5 に答える 5

7

正規表現を使用してそれを行うことができます。あなたの例に従ってください:

word.matches(".*(z.*){3}.*")

文字列に 3 つの z がある場合は true を返します。

于 2013-01-02T00:23:21.927 に答える
5

単一文字の一致をカウントするためのやや高価で遠回りな方法は次のとおりです。

String s = "pizzaz";
int numMatches = s.length() - s.replaceAll("z", "").length();

すべて"z"の s が削除された文字列の長さを元の文字列の長さから差し引くと、元の文字列のzs の数になります。

于 2013-01-02T00:23:24.313 に答える
2

Apache Commons の使用:

boolean hasThreeZs = StringUtils.countMatches("pizzaz", "z") == 3;

または Spring のバージョンのStringUtilsを使用する

boolean hasThreeZs = StringUtils.countOccurrencesOf("pizzaz", "z") == 3;
于 2013-01-02T00:20:32.827 に答える
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) 時間がかかります。

于 2013-01-02T00:37:34.057 に答える
0
String word = "pizzaz";    
System.out.println(word.replaceAll("[^z]","").equals("zzz"));
于 2013-01-02T00:41:18.290 に答える