我有一个程序,它接受用户输入并将每个单词存储在arrayList中,然后搜索外部文件中的每个单词。我想从这里做的是返回另一个单词(在另一个arrayList中)或价格值与第一个搜索单词的行相同。
例如:
Here is my user input: Tuna
Here are my associated words in another arrayList: (seared, chunky, shredded)
Here are lines in my file: the cost of seared tuna is $1 per tin. Contains brine.
the cost of shredded tuna is $50 per packet
然后我希望我的程序在每行搜索金枪鱼然后打印出来:
Seared $1
Shredded $50
对于我的程序来说,我需要了解烤这个词出现在金枪鱼出现的第一行,而且这行中的货币值是1美元。然后重复下一行的过程。
我需要知道的主要事情是,如果缓冲读取器区分不同的行,并且我可以单独搜索每行以查找arrayList中的单词和货币值。
我用于搜索的代码如下。到目前为止,它只搜索文件中的单词,然后返回该单词的位置。
while((strLine1 = br1.readLine()) != null){
for(String list: listOfWords){
Pattern p = Pattern.compile(list);
Matcher m = p.matcher(strLine1);
int start = 0;
while (m.find(start)) {
System.out.printf("Word found: %s at index %d to %d.%n", m.group(), m.start(), m.end());
start = m.end();
}
}
}
我希望这更容易理解。
答案 0 :(得分:2)
我认为如果您想搜索行中的价格,可以查找“$”符号,然后提取数字。
答案 1 :(得分:1)
您能更精确地了解您想要返回的内容,外部文件的格式以及您想要显示的内容吗?
关于你的代码 您可以在String类中使用str1.contains(str2)方法来检查用户输入的单词是否在行中而不是使用matcher,因为这里没有正则表达式。
如果用户输入多个单词,那么您可以为此循环。
答案 2 :(得分:1)
你似乎知道如何读取行以及如何遍历它们,这很好。现在您需要做的就是检查每一行是否包含单词“tuna”,如果它确实将“tuna”字符串替换为“”,那么您的Seared $ 1或者Shredded $ 50。
答案 3 :(得分:1)
你说过: “我需要知道的主要事情是,如果缓冲读取器区分不同的行,并且我可以单独搜索每一行”。
但readLine()确实读取了由换行符(\ n)划分的单独行。所以你可以单独处理这些行。对不起,如果我不明白你的问题...