Java 指定单个单词在文件中位置的最佳方法
Java the best way to specify place of a single word in file
基本上,我遇到的一个问题有很多解决方案,但我想到的唯一一个是脏的,最终会产生大量样板代码。
假设我们有一个包含这样几行的日志文件。
127.0.0.1 Amigo 30.08.2012 16:08:13 LOGIN OK <br>
192.168.100.2 Pete Tyson 30.08.2012 16:08:40 COMPLETE_TASK 15 OK <br>
146.34.15.5 Eduard Bentley 03.01.2014 03:45:23 LOGIN OK
如果日志文件可以动态更改并且不是每一行都具有相同的长度并且我想从中删除用户名,那么最佳解决方案是什么?
编辑:
private int atWhatPlaceDateIs(String[] line) {
if(line[4].contains(":") && line[3].contains("."))
return 1;
else if (line[3].contains(":") && line[2].contains("."))
return 0;
return -1;
}
if(atWhatPlaceDateIs(line) == 1)
date = line[3] + " " + line[4];
else if(atWhatPlaceDateIs(line) == 0)
date = line[2] + " " + line[3];
这就是我对日期所做的,它总是在 2-3 或 3-4 索引处
您应该考虑使用正则表达式。网络上有大量教程可以完成您所描述的内容。
本教程 here 应该为您提供足够的入门知识。
基本上,我遇到的一个问题有很多解决方案,但我想到的唯一一个是脏的,最终会产生大量样板代码。 假设我们有一个包含这样几行的日志文件。
127.0.0.1 Amigo 30.08.2012 16:08:13 LOGIN OK <br>
192.168.100.2 Pete Tyson 30.08.2012 16:08:40 COMPLETE_TASK 15 OK <br>
146.34.15.5 Eduard Bentley 03.01.2014 03:45:23 LOGIN OK
如果日志文件可以动态更改并且不是每一行都具有相同的长度并且我想从中删除用户名,那么最佳解决方案是什么?
编辑:
private int atWhatPlaceDateIs(String[] line) {
if(line[4].contains(":") && line[3].contains("."))
return 1;
else if (line[3].contains(":") && line[2].contains("."))
return 0;
return -1;
}
if(atWhatPlaceDateIs(line) == 1)
date = line[3] + " " + line[4];
else if(atWhatPlaceDateIs(line) == 0)
date = line[2] + " " + line[3];
这就是我对日期所做的,它总是在 2-3 或 3-4 索引处
您应该考虑使用正则表达式。网络上有大量教程可以完成您所描述的内容。
本教程 here 应该为您提供足够的入门知识。