java从列表读取并返回匹配项
我面临一个问题。下面你可以看到我的代码。代码要求用户输入单词的长度。读取程序时,读取test.txt并将所有适当长度的字保存到arraylist。接下来我需要的是为用户提供一个选择,让他们输入他正在搜索的单词,比如说输入是D*g。程序将从列表中读取!!not txt文件,从所有可能的数学中搜索并返回它们(exm.Dig、Dag、Dog等)。有什么办法吗java从列表读取并返回匹配项,java,Java,我面临一个问题。下面你可以看到我的代码。代码要求用户输入单词的长度。读取程序时,读取test.txt并将所有适当长度的字保存到arraylist。接下来我需要的是为用户提供一个选择,让他们输入他正在搜索的单词,比如说输入是D*g。程序将从列表中读取!!not txt文件,从所有可能的数学中搜索并返回它们(exm.Dig、Dag、Dog等)。有什么办法吗 package test; import java.awt.List; import java.io.BufferedReader; impo
package test;
import java.awt.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Pattern;
public class proba {
public static void main(String[] args) {
ArrayList listA = new ArrayList();
System.out.println("Vnesi dožino besede, ki jo iščeš");
Scanner in = new Scanner(System.in);
int dolzina = in.nextInt();
try {
File file = new File("test.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String vrstica;
while ((vrstica = bufferedReader.readLine()) != null) {
if (vrstica.length()==dolzina){
listA.add(vrstica);
}
}
System.out.println("Vnesi besedo, za neznano črko vpiši *.");
Scanner input = new Scanner(System.in);
String vnos=input.nextLine();
bufferedReader.close();
}
catch (IOException e) {
e.printStackTrace();
}}}
假设您的用例与您的要求严格相关(简单的表达式,如“D*g”),最简单的解决方案是直接使用match方法,将您的输入作为参数,将*替换为点
....
String vnos=input.nextLine();
vnos = vnos.replace("*","/.");
List<String> results = new ArrayList<String>();
//Iterates on string list
for (int i=0; i<listA.size(); i++){
String s = (String)listA.get(i);
if (s.matches(vnos))
results.add(s);
}
。。。。
字符串vnos=input.nextLine();
vnos=vnos.replace(“*”,“/”);
列表结果=新建ArrayList();
//在字符串列表上迭代
对于(int i=0;i首先,您需要一个正则表达式来进行搜索:
string vnos = input.nextLine();
string myPattern = vnos.replace("*","."); //Replaces * with the wildcard regex character, "."
您可以使用此选项从用户处获取正则表达式。若要在列表中搜索,请使用for循环:
for (int i = 0; i < listA.size(); i++)
{
if (listA.get(i).matches(myPattern))
{
System.out.println(listA.get(i));
}
}
for(int i=0;i
Regular expressions?是的,但是如何从列表中读取以及用户如何输入单词?一个字符接一个字符?假设D然后输入*然后输入g,然后输入g,然后输入enter?或者它可能是像D*g这样的格式?好的,但不是myPattern=vnos。替换(“,”);替换0个或多个字符?我需要输入*时正好替换1个字符。Dg无法与DoogManager匹配以使其正常工作谢谢