我正在尝试使用java迭代一个txt文件,我有以下代码,首先我读取txt文件没有任何问题,然后我添加我感兴趣的列名为记录列表,这个数组正确迭代一会儿。
问题是我收到了这样的内容
TCP 0.0.0.0:135 PCB:0 LISTENING
我想分割这些内容并避免使用分割和修剪之前尝试的空格,但我没有正确地执行此操作。
有人可以帮助我吗?
String FILENAME = "src/example.txt";
String line = null;
Integer lines=0;
Integer totalLines=countLines(FILENAME);
List<String> records = new ArrayList<String>();
try{
InputStream fis=new FileInputStream(FILENAME);
BufferedReader br=new BufferedReader(new InputStreamReader(fis));
while ((line = br.readLine()) != null)
{
lines++;
if (lines >= 5 && lines <= 180) {
records.add(line);
}
}
br.close();
}
catch(Exception e){
System.err.println("Error: Target File Cannot Be Read");
}
Iterator<String> it = records.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
问候!
答案 0 :(得分:4)
方法1
首先用一个空格替换多个空格 -
line = line.replaceAll("\\s+"," ");
比,用空格分开,
String[] lineTokens = line.split(" ");
方法2
正如大卫所建议的那样,你也可以这样做 -
String[] lineTokens = line.split("\\s+");
希望这会对你有帮助;)
答案 1 :(得分:3)
将您的String
分解为由空格分隔的标记
StringTokenizer st = new StringTokenizer(line);
然后提取出各个部分
String substringA = st.nextElement(); // "TCP"
String substringB = st.nextElement(); // "0.0.0.0:135"
String substringC = st.nextElement(); // "PCB:0"
String substringD = st.nextElement(); // "LISTENING"
由于StringTokenizer
被很多人讨厌,您可以使用方法将其拆分为由多个空格分隔的String
数组(使用regular expression "\\s+"
)在名为split()的String
对象上,如下所示: -
String[] tokens = line.split("\\s+");
并通过
访问它们String substringA = tokens[0]; // "TCP"
String substringB = tokens[1]; // "0.0.0.0:135"
String substringC = tokens[2]; // "PCB:0"
String substringD = tokens[3]; // "LISTENING"