我是java的新手,我现在有点困惑。我试图从文件中获取一些输入数据,然后解析它/并为其提供正确的字段。例如,我的“in.txt”
Number: 2 Gender: 1 City: 4 Car: 7
Gender: 1 City: 4 Number: 1
City: 2 Car: 1 Number: 3
我正试图到达数字等于2和性别等于1,而城市等于4等等。到目前为止,我能够使用java的扫描仪来读取文件,所以我知道它正确读取。那么我怎样才能将名称与数字对应(数字:2)。每当它看到“:”时我应该拆分线吗?就像给它一个左侧和右侧,或者用“性别:1城市:4 ......”搞乱其余部分?我正在尝试不同的东西,因为我正在输入这个,而我只是陷入了如何将数据与文件分开的问题。我非常感谢任何帮助。谢谢。这是我用来获取文件的扫描仪文件。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class example{
public static void main(String[] args) throws FileNotFoundException{
File inFile = new File("in.txt");
Scanner input = new Scanner(inFile);
while(input.hasNext()){
String line = input.nextLine();
System.out.println(line);
}
}
}
答案 0 :(得分:2)
如果您的文件或行始终按照您的描述进行构建,则可以拆分空格并在数组中搜索所需的值,例如: "Number:"
(如有必要,您可以删除“:”),然后在此position + 1
处观看数组,并且值为。
分裂为“:”将以这样的数组结束:
{[Number],[ 2 Gender],[ 1 City],[ 4 Car],[ 7]}
所以我认为这不是最好的解决方案。
答案 1 :(得分:0)
解决每行中识别每个键/值对的问题的一种方法是使用正则表达式来查找一行中的每一对。 Java Tutorials on Regular Expressions为该主题提供了一个良好且相当全面的起点。
为了让您开始这一点,正则表达式[A-Za-z]+: [0-9]+
将为您隔离每个键值对,而正则表达式助手(如this web page at regexplanet.com)将极大地帮助您进行测试并开始识别你需要的代码。
答案 2 :(得分:0)
你想得到这些数字吗? 1: 如果我理解正确,你可以这样做。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Number {
public static void main(String[] args) {
String regex = "\\d+";
String candidate = "Number: 2 Gender: 1 City: 4 Car: 7 ";
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(candidate);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
2:如果你可以格式化你的数据,你可以格式化为JSON,并使用json-lib.jar