2017-12-02 7 views
0

正規表現を使用して単語をテキスト行にマッチさせ、マッチしたすべての単語の最初の文字のインデックスをリストに格納して、次の文字の識別子( "^")一致した行を印刷した後の行リスト内のパターンマッチのインデックスを格納する

H:\ CSCI 1152ノート> javacのProject.java \ FindWord.java:17:エラー:互換性のない型:文字列をリストに変換することはできません indexOfSearch = matcher.group(私は次のエラーを受信して​​います); ^

public String findWords(String str, String search) throws Exception { 

     try { 
      List<Integer> indexOfSearch = new ArrayList<>(); 

      Pattern pattern = Pattern.compile("\\b" + search + "\\b"); 
      Matcher matcher = pattern.matcher(str); 

      while (matcher.find()) { 
       indexOfSearch = matcher.group(); 
      } 

      String fullCarets = ""; 
      System.out.println(str);//print the text from file 
      if(indexOfSearch.size() >= 1) {    
       for (int j = 0; j <= indexOfSearch.size() - 1; j++) {//each index of search word 
        String spaces = "";//spaces to caret 
        int indexTo = 0;//how many spaces will be added 
        if (j < 1 && indexOfSearch.get(j) != -1) { 
         indexTo = indexOfSearch.get(j);//the first index 
        } else if (indexOfSearch.get(j) != -1) { 
         indexTo = (indexOfSearch.get(j) - indexOfSearch.get(j - 1) - 1);//all other indexes in the row 
        } 
        if (indexTo >= 0 && indexOfSearch.get(j) != -1) {     
         for (int i = 0; i < indexTo; i++) {//add appropriate number of spaces to word 
          spaces += " ";//add a space 
         } 
         fullCarets += (spaces + "^"); 
         System.out.print(spaces + "^");//print the spaces and spaces 
        } 
       } 

       System.out.println("");//used to make the print slightly easier to look at. 

       return str + "\n" + fullCarets + "\n"; 

      } 
      return ""; 
     }catch (Exception e) { 

      throw new Exception(e.getMessage()); 
     } 
+0

問題を特定できるかどうかを確認してください。すべてのコードを貼り付けることで、必要なものを見つけ出すことが難しくなります。 – theMayer

+0

@theMayer私はそれを凝縮し、ポインターに感謝しました。さらに凝縮する必要がある場合は、試してみます。 – Austin

+0

テキストを一致させる場合は、サンプルテキスト、一致させる特性、試した内容を入力する必要があります。テキストの行で一致するものを検索するだけでなく、ここではさらに多くのことが起こります。あなたのプログラム全体を貼り付ける必要はないことに留意してください。ほとんどの人がメインメソッドなどを設定することができます。 – theMayer

答えて

1

あなたは、コンパイラのエラーメッセージがあります。この行の

error: incompatible types: String cannot be converted to List

を:

indexOfSearch = matcher.group(); 

group()Stringを返し、indexOfSearchは以下のように定義される

これは正方形の穴の丸いペグです。あなたはここで間違ったことをしています。まず、変数に、実際にはadd()からその変数が参照するListに割り当てるときに割り当てようとしています。第2に、ListStringの値ではなくIntegerの値を保持すると宣言されているので、matcher.group()ではなく、別の値を追加する必要があります。問題の説明と変数名から、一致のstart()のインデックスが必要なように見えます。

indexOfSearch.add(matcher.start()); 
+0

ありがとうございます - それはうまく動作します。 V/R、Austin – Austin

関連する問題