gpt4 book ai didi

java - 将模式匹配的索引存储在列表中

转载 作者:行者123 更新时间:2023-12-02 11:55:57 24 4
gpt4 key购买 nike

尝试使用正则表达式将单词与文本行匹配,并将所有匹配单词的第一个字符的索引存储在列表中,以便在打印匹配行后将标识符(“^”)定位在下一行。我收到以下错误:

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());
}

最佳答案

您收到编译器错误消息:

error: incompatible types: String cannot be converted to List

在这一行:

indexOfSearch = matcher.group();

group() 返回一个 StringindexOfSearch 定义为:

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

很明显这是一个方孔中的圆钉。你在这里做错了几件事。首先,您尝试分配给 List 变量,而实际上您想要 add() 到该变量引用的 List 。其次,List 被声明为保存 Integer 值,而不是 String 值,因此您需要添加其他内容,而不是 matcher。组()。从您的问题描述和变量名称来看,您似乎想要匹配的 start() 的索引。

indexOfSearch.add( matcher.start() );

关于java - 将模式匹配的索引存储在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com