我有文本文件。它在每行中包含分隔数据,例如,
120 US 1 ALASKA 4.
在某些行中,某些数据丢失。就像,
US 1 ALASKA 4
由于它是由空格分隔的,因此我使用 split 来获取 token 。我无法确定缺少哪些数据。
在下面的代码中,示例 input1 将验证 120
是否为 ^[1-9]+$
。如果行中缺少 120
(如示例 input2
所示),则 token[0]
将具有 US
,它将验证 ^[1-9]+$
并给出 “Error in a”
。相反,我想知道缺少哪个值。因此,我可以显示错误 “Error a i miss”
并且 token[1]
应包含 US
,以便我可以正确验证.
有人可以提供一些执行上述操作的想法吗?
String line = "120 US 1 ALASKA 4"; //Sample input1
//String line = "US 1 ALASKA 4"; //Sample input2
String delimiter = "[ ]+";
String tokens[] = line.split(delimiter);
String a = tokens[0];
String b = tokens[1];
String c = tokens[2];
String d = tokens[3];
String e = tokens[4];
//Sample validation
if(a.matches("^[1-9]+$")){
System.out.println("Matches");
}else{
System.out.println("Error in a");
}
最佳答案
我会尝试以下方法:
- 将一行分成多个标记。
- 分析每个标记以确定它可能属于的可能位置(字符串只能位于位置 2 或 4,整数只能位于 1,3 或 5。长字符串必须位于位置 5 ...
- 由于 token 的位置必须增加,您可以确定可能丢失的 token 。
关于java - 确定缺失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141229/