正規表現を使用して単語をテキスト行にマッチさせ、マッチしたすべての単語の最初の文字のインデックスをリストに格納して、次の文字の識別子( "^")一致した行を印刷した後の行リスト内のパターンマッチのインデックスを格納する
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());
}
問題を特定できるかどうかを確認してください。すべてのコードを貼り付けることで、必要なものを見つけ出すことが難しくなります。 – theMayer
@theMayer私はそれを凝縮し、ポインターに感謝しました。さらに凝縮する必要がある場合は、試してみます。 – Austin
テキストを一致させる場合は、サンプルテキスト、一致させる特性、試した内容を入力する必要があります。テキストの行で一致するものを検索するだけでなく、ここではさらに多くのことが起こります。あなたのプログラム全体を貼り付ける必要はないことに留意してください。ほとんどの人がメインメソッドなどを設定することができます。 – theMayer