Java—从文本中读入值
好的,我在这里读了很多关于从文本文件中逐行阅读并将其拆分的例子,但我不太确定我是否理解在我的情况下如何做到这一点。我有一个文件,基本上分为三列,如下所示:Java—从文本中读入值,java,parsing,Java,Parsing,好的,我在这里读了很多关于从文本文件中逐行阅读并将其拆分的例子,但我不太确定我是否理解在我的情况下如何做到这一点。我有一个文件,基本上分为三列,如下所示: START 5000 FIND A PLUS B SAVE C STOP A, INT 69 B, INT -420 C, CRAZY 008484342 我要做的是读取这个包含上述
START 5000
FIND A
PLUS B
SAVE C
STOP
A, INT 69
B, INT -420
C, CRAZY 008484342
我要做的是读取这个包含上述信息的.txt文件。我认为逐行读取文件最好,然后将其拆分为正确的列。我遇到的问题是,第一列并不总是在这里。它是可选的。如果他们都填好了,我几乎可以肯定我可以用这样的东西
String[] array1 = myLine.split(",");
String[] array1 = myLine.split(",");
String[] array2 = array1[1].split(" ");
我的另一个想法是根据,'分割线,然后根据''再次分割线,但我不确定怎么做。也许是这样的
String[] array1 = myLine.split(",");
String[] array1 = myLine.split(",");
String[] array2 = array1[1].split(" ");
还有,有没有办法只读取文件并将每一行存储到like(String,String)中,然后只检查int和String?也许是试一试?或者说:
Scanner input = new Scanner(File);
while(input.hasNext()){
String str = input.next();
try{
b = Integer.parseInt(str);
}
我不确定这是否像我做的那样困难,但也许是这样。。。如果您对本主题有任何帮助,我们将不胜感激
在查看了更多代码后,我有以下几点要开始:
public static void main(String[] args) {
String file ="TEST.txt";
try{
FileReader input = new FileReader(file);
BufferedReader bufferReader = new BufferedReader(input);
String line;
while ((line = bufferReader.readLine()) != null) {
// Is this where I would attempt to split the lines?
System.out.println(line);
}
bufferReader.close();
}catch(Exception e){
System.out.println("Error while reading file line by line:" + e.getMessage());
}
}
}
因此,我成功地读入了文件并将信息显示回输出控制台。现在要分开这些线。。。我将张贴我的工作,因为我去,任何帮助和/或建议将不胜感激!同时也感谢那些已经发表评论帮助分割刺痛的人,我现在正在尝试 使用
split(“+”)
,它将在任意数量的空格上拆分。这是因为split
处理正则表达式。如果要在任何类型的空格上拆分,也可以使用split(\\s+)
。在获得数组后,检查它是否有2个或3个元素,并相应地进行处理。使用split(“+”)
将在任意数量的空格上拆分。这是因为split
处理正则表达式。如果要在任何类型的空格上拆分,也可以使用split(\\s+)
。得到数组后,检查它是否有2个或3个元素,并相应地处理它 嗯。。。我还没有时间回答一个很长的问题。但我建议您阅读一点关于正则表达式(RegEx)的知识,以及它在java中的使用方式。。。我相信这将有助于解决这个问题,以及今后大量类似的问题
试试这个:。。。关于这个。。。如果第一个没有帮助;) 嗯。。。我还没有时间回答一个很长的问题。但我建议您阅读一点关于正则表达式(RegEx)的知识,以及它在java中的使用方式。。。我相信这将有助于解决这个问题,以及今后大量类似的问题
试试这个:。。。关于这个。。。如果第一个没有帮助;) 您可以组合这两个表达式,并且只检查数组的长度。e、 g:
String[] array = line.trim().split("[, ]+");
switch(array.length) {
case 2:
// do something
break;
case 3:
// do something
break;
default:
// something wrong
break;
}
行中的
trim()
用于避免第一个元素数组中的空字符串。您可以组合这两个表达式,只检查数组的长度。e、 g:
String[] array = line.trim().split("[, ]+");
switch(array.length) {
case 2:
// do something
break;
case 3:
// do something
break;
default:
// something wrong
break;
}
行中的
trim()
用于避免第一个元素数组中的空字符串。在第二个示例中添加另一个引号以结束字符串。在第二个示例中添加另一个引号以结束字符串。如果我这样做,带停止符的行的长度不是只有1吗?如果使用扫描仪,则没有更多行。如果最后有一个空行,如果(line==null | | | line.trim().isEmpty()){/*stop*/},您可以在上停止。如果我这样做,停止的行不是只有长度1吗?如果您使用的是scanner,就没有更多的行了。如果最后有一个空行,可以在If(line==null | | | line.trim().isEmpty()){/*stop*/}
上停止。