我对Java很陌生,对此有疑问。
这些是我的代码,我所做的是我已经从txt文件中过滤出数据并将其保存到另一个txt文件中。
我现在要做的是检索指定列(这是最后一列)并将该数据用于分析。
我想在最后一列中搜索某个关键字出现的次数。
只要有匹配项,计数器就会增加,并且用定界符分隔文本。
例如,txt文件中有a,b,c,d,e,f,g,h,i,j。 而且我想从j本身检索一个指定关键字,并有一个计数器,该计数器每次发生时都会增加。
有人可以建议如何做吗?
这些是我的代码:
import java.io.*;
public class java {
public static void main(String[] args) {
String searchWord = "asiana";
try (BufferedReader in = new BufferedReader(
new FileReader("D:\\Downloads\\dataAnalysis1.txt"));
BufferedWriter out = new BufferedWriter(
new FileWriter("D:\\Downloads\\output.txt"))) {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
// extract by lines and write to file
if (line.contains(searchWord)) {
out.write(line);
out.newLine();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
答案 0 :(得分:0)
正如我提到的
如果其为CSV,则说明您在读取文件时使用了一些分隔符
(, or ;)
,那么您已经获取了整行的行变量,可以使用String.split,然后引用。您将获得的新数组的长度,应该为您提供最后一列的值
但是要注意,正如普罗霍罗夫(M. Prokhorov)所提到的,如果数据还将包含转义的分隔符,那么它将无法正常工作,取决于数据
public static String getLastColumnValue(String value, char separator) {
//https://stackoverflow.com/questions/54630596/how-to-retrieve-last-column-from-set-of-data
String[] tokens = value.split(String.valueOf(separator));
//indexed from zero -> length -1
if(tokens.length>0) {
return tokens[tokens.length-1];
}else {
return null;
}
}
经过测试
System.out.println(StringUtils.getLastColumnValue("first col;second;foo;fooolastsemicol", ';'));
//fooolastsemicol
System.out.println(StringUtils.getLastColumnValue("first col,second,foo,fooolastcomma", ','));
//fooolastcomma
答案 1 :(得分:0)
“找到任何匹配项时,可以将结果放入数组/列表的字符串中。还可以返回列表/数组中的最后一个元素”;
String searchWord = "asiana";
List<String> list = new LinkedList<String>();
try (BufferedReader in = new BufferedReader(
new FileReader("D:\\Downloads\\dataAnalysis1.txt"));
BufferedWriter out = new BufferedWriter(
new FileWriter("D:\\Downloads\\output.txt"))) {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
// extract by lines and write to file
if (line.contains(searchWord)) {
out.write(line);
list.addLast(line);
out.newLine();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
//print the last element from the list.
print: list.get(list.size()-1);