0

CodingBatの演習を完了するにつれて、Javaを学習しています。正規表現を使用して、レベル2の文字列の問題を解決したいと考えています。私は現在この問題を解決しようとしています:

文字列「code」が指定された文字列のどこかに出現する回数を返します。ただし、「d」の文字はすべて受け入れるため、「cope」と「cooe」がカウントされます。

countCode("aaacodebbb") → 1
countCode("codexxcode") → 2
countCode("cozexxcope") → 2

そして、これが私が書いたコードの一部です(これは機能しません、そして私は理由を知りたいです):

public int countCode(String str) {
 int counter = 0;

 for (int i=0; i<str.length()-2; i++)
       if (str.substring(i, i+3).matches("co?e"))
        counter++;

 return counter;
}

おそらくmatchesメソッドは部分文字列と互換性がないと思いますが、よくわかりません。

4

4 に答える 4

2

正規表現構文を使用する必要があります。この場合、必要な"co\\we"のは、\\w任意の文字を意味します。

ところで、あなたはできる

public static int countCode(String str) {
    return str.split("co\\we", -1).length - 1;
}
于 2012-08-13T16:07:39.547 に答える
1

ifステートメントでこれを使用してみてください。JavaルールとPHPを混同していない限り、+3ではなく+4にする必要があります。

str.substring(i, i+4)
于 2012-08-13T16:10:14.177 に答える
0
public int countCode(String str) {
  int count=0;             // created a variable to count the appearance of "coe" in the string because d doesn't matter. 
  for(int i=0;i<str.length()-3;i++){
    if(str.charAt(i)=='c'&&str.charAt(i+1)=='o'&&str.charAt(i+3)=='e'){
      ++count;                       // increment count if we found 'c' and 'o' and 'e' in the string.

    }
  }
  return count;       // returing the number of count 'c','o','e' appeared in string.
}
于 2016-04-27T19:33:24.253 に答える
-2
public class MyClass {

    public static void main(String[] args) {

      String str="Ramcodecopecofeacolecopecofeghfgjkfjfkjjcojecjcj BY HARSH RAJ";
      int count=0;

      for (int i = 0; i < str.length()-3; i++) {
          if((str.substring(i, i+4)).matches("co[\\w]e")){
                count++;

          }
      }
      System.out.println(count);
    }   
}
于 2014-11-08T09:50:15.690 に答える