Java 根据不同的文本文件的分隔符解析不同的文本文件
我今天断断续续地做这件事 这里是我的方法,它基本上需要接受一个.data(txt)文件位置,然后遍历该文本文件的内容,并根据存在的分隔符将其分解为字符串。这是两个文件。 个人档案Java 根据不同的文本文件的分隔符解析不同的文本文件,java,split,delimiter,Java,Split,Delimiter,我今天断断续续地做这件事 这里是我的方法,它基本上需要接受一个.data(txt)文件位置,然后遍历该文本文件的内容,并根据存在的分隔符将其分解为字符串。这是两个文件。 个人档案 Person ID,First Name,Last Name,Street,City 1,Ola,Hansen,Timoteivn,Sandnes 2,Tove,Svendson,Borgvn,Stavanger 3,Kari,Pettersen,Storgt,Stavanger 订单文件 Order ID|Ord
Person ID,First Name,Last Name,Street,City
1,Ola,Hansen,Timoteivn,Sandnes
2,Tove,Svendson,Borgvn,Stavanger
3,Kari,Pettersen,Storgt,Stavanger
订单文件
Order ID|Order Number|Person ID
10|2000|1
11|2001|2
12|2002|1
13|2003|10
public static void openFile(String url) {
//initialize array for data to be held
String[][] myStringArray = new String[10][10];
int row = 0;
try {
//open the file
FileInputStream fstream = new FileInputStream(url);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
//ignores any blank entries
if (!"".equals(strLine)) {
//splits by comma(\\| for order) and places individually into array
String[] splitStr = new String[5];
//splitStr = strLine.split("\\|");
/*
* This is the part that i am struggling with getting to work.
*/
if (strLine.contains("\\|")) {
splitStr = strLine.split("\\|");
} else if (strLine.contains(",")) {
splitStr = strLine.split(",");
}else{
System.out.println("error no delimiter detected");
}
for (int i = 0; i < splitStr.length; i++) {
myStringArray[row][i] = splitStr[i];
System.out.println(myStringArray[row][i]);
}
}
}
//Close the input stream
br.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
订单ID |订单号|人员ID
10|2000|1
11|2001|2
12|2002|1
13|2003|10
公共静态void openFile(字符串url){
//初始化要保存的数据的数组
字符串[][]myStringArray=新字符串[10][10];
int行=0;
试一试{
//打开文件
FileInputStream fstream=新的FileInputStream(url);
BufferedReader br=新的BufferedReader(新的InputStreamReader(fstream));
弦斯特林;
//逐行读取文件
而((strLine=br.readLine())!=null){
//忽略任何空白条目
如果(!“”.equals(strLine)){
//按逗号分隔(\\\\\;表示顺序)并分别放入数组中
String[]splitStr=新字符串[5];
//splitStr=strLine.split(“\\\\”);
/*
*这是我努力工作的一部分。
*/
if(strLine.contains(“\\\\”){
splitStr=strLine.split(“\\\\”);
}else if(strLine.contains(“,”){
splitStr=strLine.split(“,”);
}否则{
System.out.println(“未检测到分隔符的错误”);
}
对于(int i=0;i
已正确读取和解析person文件。但是带有“|”分隔符的订单文件没有任何分隔符。我刚得到“空”打印输出
让我困惑的是,当我只有splitStr=strLine.split(“\\\”)时;它可以工作,但我需要这个方法能够检测到存在的分隔符,然后应用正确的分割
任何帮助都将不胜感激除了应该使用CSV库完成这一事实之外,此代码失败的原因是不接受正则表达式。删除转义字符,以便可以检测到管道字符
if (strLine.contains("|")) {
使用CSV解析库并指定所需的分隔符。更少的代码行,更少的错误,更多的时间和朋友喝酒,更多的快乐。。。例如:opencsv。我觉得自己很傻。这很有效,谢谢你。我只是假设它将类似于拆分方法。那可真烦人,非常感谢你的帮助!!