我有一个dataDic,它是一个数组{“ ant”,“ bird”,“ cat”}
dataDic是我想在stringPattern上搜索的单词数组
我想使用dataDic从stringPattern = birdantantcatbirdcat获取单词结果
例1。dataDic = {“ ant”,“ bird”,“ cat”}的答案是{bird,ant,ant,cat,bird,cat} Ex2。dataDic = {“ ant”,“ cat”}的答案是{ant,ant,cat,cat}
这是我的代码`private static String stringTest =“ birdantantcatbirdcat”; 私有静态列表dicListWord; 私有静态ListresultString = new ArrayList <>();
public static void main(String[] args) {
dicListWord = new ArrayList<>();
dicListWord.add("ant");
dicListWord.add("bird");
dicListWord.add("cat");
String[] data = stringTest.split("");
for (String dataDic:dicListWord) {
String [] wordList = dataDic.split("");
String foundWord = "";
for (String charTec:data) {
for (String dicWord:wordList) {
if(charTec.equals(dicWord)){
foundWord = foundWord.concat(charTec);
if(dataDic.equals(foundWord)){
resultString.add(foundWord);
foundWord = "";
}
}
}
}
}
for (String w1:data) {
for (String result:resultString) {
System.out.println(result);
}
}
}`
///////////////////////////////////////////////////// //////////////////////////////
我运行的结果是
{蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟,蚂蚁,蚂蚁,鸟,鸟}
在浏览字符串以查找单词的匹配项时,使用TreeMap将单词的位置存储为关键字,并将单词本身存储为值。您需要选择a的原因TreeMap
是,它是根据其键的自然顺序进行排序的,这是满足您要求的重要方面。您的要求指出,结果列表中的单词应按它们在字符串中出现的顺序排列。
演示:
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("ant", "bird", "cat");
String str = "birdantantcatbirdcat";
System.out.println(getMatchingWords(words, str));
}
static List<String> getMatchingWords(List<String> words, String str) {
Map<Integer, String> map = new TreeMap<Integer, String>();
for (String word : words) {
Pattern pattern = Pattern.compile(word);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
map.put(matcher.start(), matcher.group());
}
}
return map.values().stream().collect(Collectors.toList());
}
}
输出:
[bird, ant, ant, cat, bird, cat]
如有任何疑问/问题,请随时发表评论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句