Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中搜索文本文件中的单词_Java - Fatal编程技术网

在java中搜索文本文件中的单词

在java中搜索文本文件中的单词,java,Java,我试图在文本文件中搜索单词,并用小写字符替换所有大写字符。问题是,当我使用正则表达式使用replaceall函数时,会出现语法错误。我尝试过不同的策略,但不起作用。有什么建议吗?我认为也许我应该创建一个必须调用的replaceall方法,但我并不认为它有什么用处 public static void main() throws FileNotFoundException { ArrayList<String> inputContents = new ArrayList&l

我试图在文本文件中搜索单词,并用小写字符替换所有大写字符。问题是,当我使用正则表达式使用replaceall函数时,会出现语法错误。我尝试过不同的策略,但不起作用。有什么建议吗?我认为也许我应该创建一个必须调用的replaceall方法,但我并不认为它有什么用处

public static void main()  throws FileNotFoundException {

    ArrayList<String> inputContents = new ArrayList<>();

    Scanner inFile =
     new Scanner(new FileReader("H:\\csc8001\\data.txt"));

     while(inFile.hasNextLine())
     {
      String line = inFile.nextLine();
       inputContents.add(inFile.nextLine());

     }
     inFile.close();

     ArrayList<String> dictionary = new ArrayList<>();


     for(int i= 0; i <inputContents.size(); i++)
     {
      String newLine = inFile.nextLine();
      newLine = newLine(i).replaceAll("[^A-Za-z0-9]");
      dictionary.add(inFile.nextLine());

     }


    // PrintWriter outFile =
    // new PrintWriter("H:\\csc8001\\results.txt");

}
publicstaticvoidmain()抛出FileNotFoundException{
ArrayList inputContents=新的ArrayList();
扫描填充=
新扫描仪(新文件阅读器(“H:\\csc8001\\data.txt”);
while(infle.hasNextLine())
{
字符串行=infle.nextLine();
inputContents.add(infle.nextLine());
}
infle.close();
ArrayList字典=新的ArrayList();

对于(int i=0;i,此行存在编译错误:

newLine = newLine(i).replaceAll("[^A-Za-z0-9]");
因为需要两个参数:正则表达式和替换。 (因为新行(i)
是无意义的。) 这应该更接近您的需要:

newLine = newLine.replaceAll("[^A-Za-z0-9]+", " ");
也就是说,将非
[A-Za-z0-9]
字符的非空序列替换为空格

要将所有大写字母转换为小写,使用起来更简单、更好

代码中还有许多其他问题。例如,由于一些不适当的
infle.nextLine
调用,输入中的某些行将被跳过。此外,输入文件在第一次循环后关闭,但第二次尝试使用它,这毫无意义

随着这些问题和其他一些问题的解决,这应该更接近您想要的:

Scanner inFile = new Scanner(new FileReader("H:\\csc8001\\data.txt"));

List<String> inputContents = new ArrayList<>();
while (inFile.hasNextLine()) {
    inputContents.add(inFile.nextLine());
}
inFile.close();

List<String> dictionary = new ArrayList<>();
for (String line : inputContents) {
     dictionary.add(line.replaceAll("[^A-Za-z0-9]+", " ").toLowerCase());
}

此行出现编译错误:

newLine = newLine(i).replaceAll("[^A-Za-z0-9]");
因为需要两个参数:正则表达式和替换。 (因为新行(i)是无意义的。) 这应该更接近您的需要:

newLine = newLine.replaceAll("[^A-Za-z0-9]+", " ");
也就是说,将非
[A-Za-z0-9]
字符的非空序列替换为空格

要将所有大写字母转换为小写,使用起来更简单、更好

代码中还有许多其他问题。例如,由于一些不适当的
infle.nextLine
调用,输入中的某些行将被跳过。此外,输入文件在第一次循环后关闭,但第二次尝试使用它,这毫无意义

随着这些问题和其他一些问题的解决,这应该更接近您想要的:

Scanner inFile = new Scanner(new FileReader("H:\\csc8001\\data.txt"));

List<String> inputContents = new ArrayList<>();
while (inFile.hasNextLine()) {
    inputContents.add(inFile.nextLine());
}
inFile.close();

List<String> dictionary = new ArrayList<>();
for (String line : inputContents) {
     dictionary.add(line.replaceAll("[^A-Za-z0-9]+", " ").toLowerCase());
}

请正确设置代码格式。请查看字符串的replaceAll方法:请正确设置代码格式。请查看字符串的replaceAll方法:因此,您认为,最好创建另一个方法,该方法的功能性将用于主方法,以便执行请求的任务,无论是replaceAll还是to小写?我只是想简单地将
replaceAll
替换为
toLowerCase
。我添加了更多解释,以防有帮助,请参阅我的更新谢谢你的帮助。我只想问最后一个问题,你是如何从inputContents列表中删除所有非单词的?如何确保没有感叹号d涉及其他字符?@Jazztheman好的,我实际上遗漏了你问题中的一些内容。我更新了我的答案,我希望它也能回答你评论中的后续问题。嘿,伙计,是的,我想你可以进一步帮助我,因为我的正则表达式不起作用,我的输出是空的。基本目标是获取所有单词,将它们转换为小写,将它们按字母顺序放入字典中,每行一个单词,不重复,然后将字典输出到另一个文件中。问题是end prdduct是空的。我不知道为什么。根据您的逻辑,我得到了下面的代码。因此,您认为,最好创建另一个方法,该方法的功能性将用于执行请求任务的主要方法是replaceAll还是toLowerCase?我只是想用
toLowerCase
简单地替换
replaceAll
。我添加了更多解释,以防有用,请参阅我的更新谢谢你的帮助。我只有最后一个问题,你是如何删除所有非单词的输入内容列表中的?如何确保没有感叹号和其他字符?@Jazztheman好的,我实际上遗漏了你问题中的一些内容。我更新了我的答案,希望它也能回答你在评论中的后续问题。嘿,伙计,是的,我想你可以进一步帮助我,因为我的正则表达式不起作用,我的输出是空的。基本上,目标是获取所有单词,将它们转换为小写,按字母顺序放入字典中,每行一个单词,不重复,然后将字典输出到另一个文件中。问题是结尾部分是空的。我不知道为什么。根据您的逻辑,我得到了下面的代码