Java 匹配文本文件中的单词并高亮显示

Java 匹配文本文件中的单词并高亮显示,java,regex,Java,Regex,我在文本文件中有这样的输入 例如: 输入文件1:“周日开店” 输入文件2:“每周五,折扣将为” 输入文件3:“从星期一开始” 我想为天的名称构建文件,如下所示 文件字: 星期六 星期天 星期一 星期二 星期三 星期四 星期五 你能帮我编码匹配文本文件中的日期吗 用java代码在文本中突出显示当天的名称我认为这是一项简单的任务。我们需要一份包含天数的清单。然后逐字阅读文件并检查列表中是否包含该单词。如果列表包含单词,那么它是必需的,我们将把它放入输出文件中。 我正在这里粘贴代码,如果您还需要其

我在文本文件中有这样的输入 例如:

输入文件1:“周日开店”

输入文件2:“每周五,折扣将为”

输入文件3:“从星期一开始”

我想为天的名称构建文件,如下所示 文件字:

  • 星期六
  • 星期天
  • 星期一
  • 星期二
  • 星期三
  • 星期四
  • 星期五
你能帮我编码匹配文本文件中的日期吗
用java代码在文本中突出显示当天的名称

我认为这是一项简单的任务。我们需要一份包含天数的清单。然后逐字阅读文件并检查列表中是否包含该单词。如果列表包含单词,那么它是必需的,我们将把它放入输出文件中。 我正在这里粘贴代码,如果您还需要其他信息,请告诉我:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Prgo2 {
    public static void main(String[] args) throws IOException {
        String[] days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
        List<String> daysList = Arrays.asList(days);
        // We can create direct list also
        Scanner sc = new Scanner(new File("C:\\vishal\\abc.txt"));
        FileWriter wr = new FileWriter(new File("C:\\vishal\\days.txt"));

        while (sc.hasNext()) {
            String s = sc.next();
            if (daysList.contains(s)){
                wr.write(s);
            }

        }
        wr.close();
    }
}
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.array;
导入java.util.List;
导入java.util.Scanner;
公共类Prgo2{
公共静态void main(字符串[]args)引发IOException{
字符串[]天={“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
List daysList=Arrays.asList(天);
//我们也可以创建直接列表
Scanner sc=新扫描仪(新文件(“C:\\vishal\\abc.txt”);
FileWriter wr=新的FileWriter(新文件(“C:\\vishal\\days.txt”);
while(sc.hasNext()){
字符串s=sc.next();
如果(日期列表包含){
wr.write(s);
}
}
wr.close();
}
}

您可以使用regexp表达式来解析文件名。我编写了两个方法,一个返回创建日期名称的
List
,另一个只返回一个值

public class Test {

    private static final String file1 = "opening of the shop on sunday";
    private static final String file2 = "Every friday , the discount will be ";
    private static final String file3 = "start in the week on monday ";
    private static final String fileWithSeveralDays = "monday start in the week on monday and every thursday";

    private static final Pattern pattern = Pattern
            .compile("(saturday|sunday|monday|tuesday|wednesday|thursday|friday)");

    public static void main(String[] args) {
        Map<String, Set<String>> fileToDaysMap = new HashMap<>();

        fileToDaysMap.put(file1, findAllMatches(file1));
        fileToDaysMap.put(file2, findAllMatches(file2));
        fileToDaysMap.put(file3, findAllMatches(file3));
        fileToDaysMap.put(fileWithSeveralDays, findAllMatches(fileWithSeveralDays));

        String singleDay = findSingleOrNull(file1);
    }

    private static Set<String> findAllMatches(String fileName) {
        Set<String> matches = new HashSet<>();
        Matcher matcher = pattern.matcher(fileName);
        while (matcher.find()) {
            matches.add(matcher.group(1));
        }
        return matches;
    }

    private static String findSingleOrNull(String fileName) {
        Matcher matcher = pattern.matcher(fileName);
        return matcher.find() ? matcher.group(1) : null;
    }

}
公共类测试{
private static final String file1=“周日开店”;
private static final String file2=“每周五,折扣为”;
private static final String file3=“本周星期一开始”;
private static final String filewitheveraldays=“星期一开始于星期一和每周四”;
私有静态最终模式=模式
.compile((星期六、星期日、星期一、星期二、星期三、星期四、星期五);
公共静态void main(字符串[]args){
Map fileToDaysMap=newhashmap();
fileToDaysMap.put(file1,findAllMatches(file1));
fileToDaysMap.put(file2,findAllMatches(file2));
fileToDaysMap.put(file3,findAllMatches(file3));
fileToDaysMap.put(filewitheveraldays,findAllMatches(filewitheveraldays));
String singleDay=findSingleOrNull(file1);
}
私有静态集findAllMatches(字符串文件名){
Set matches=新HashSet();
Matcher Matcher=pattern.Matcher(文件名);
while(matcher.find()){
matches.add(matcher.group(1));
}
返回比赛;
}
私有静态字符串findSingleOrNull(字符串文件名){
Matcher Matcher=pattern.Matcher(文件名);
返回matcher.find()?matcher.group(1):null;
}
}

您尝试了什么,向我们展示了一些代码以及您面临的问题?输入是否只包含一个天数名称?