1

::这里是新手::

我有一个文本文件,其中包含类似

COM22:15:55:09 20.09.2013VOLT=224

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

15:55:09 20.09.2013

接着

伏=224

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

4

3 回答 3

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 '>'

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

于 2013-09-21T07:32:36.627 回答
0

我认为最简单的方法是使用正则表达式(如果您不知道正则表达式是什么,请在此处阅读)。这是一个可能对您的将军有所帮助的正则表达式(因为使用像 4 和 8 这样的幻数往往不好) -

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

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

于 2013-09-21T04:34:58.967 回答
0

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

不。

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

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

于 2013-09-21T05:26:11.210 回答