在文本文件中读取特定数量的字符

时间:2013-09-21 04:17:52

标签: java text

::这里的新手::

我有一个文本文件,如

COM22:15:55:09 20.09.2013VOLT = 224

我想阅读这一行并将其分开以获取

15:55:09 20.09.2013

然后

伏= 224

此时我正在使用br.readLine()读取整行...有没有什么方法可以限制br.readline()从某个编号的字符开始(例如第4个字符在行中)并结束在一定的(例如第8次)???

3 个答案:

答案 0 :(得分:0)

你最简单的方法就是使用正则表达式(如果你不知道什么是正则表达式,请阅读它here)。这是一个可能对你的将军有帮助的正则表达式(因为使用像4和8这样的魔法数字往往很糟糕) -

^.*?\s([\d: \.]*)(.*$)

在这种情况下,捕获组1为15:55:09 20.09.2013,组2为Volt=224

答案 1 :(得分:0)

  

有什么方法可以限制br.readline()从某些编号字符开始[等等]

没有

如果您要使用BufferedReader.readLine(),则需要使用正则表达式或其他东西将行拆分或解析为组件。

或者,您可以使用Scanner类及其next...方法来阅读各个字段。

答案 2 :(得分:0)

不要试图限制字符,而是像

一样阅读整行
String line = br.readLine();

从我看到的评论中,您要解析

<COM22: 15:55:09 20.09.2013>VOLT=224

现在把它分成几部分。第一部分是

int leftAngleIdx = line.indexOf('<');
int rightAngleIdx = line.indexOf('>');

//Some error handling code if left >= right or if any of them were -1.


String comAndDate = line.substring(leftAngleIdx + 1, rightAngleIdx); //substring operates on half open intervals. 

//Similarly using substring operations. Extract the date part from comAndDate

String volt = line.substring(rightAngleIdx + 1); // After '>'

您也可以使用正则表达式,也许稍后。

相关问题