前提是数据是以"\t"分割,每个数据以"\""包裹,换行符为"\r\n"
1.准备String dataApp = AppConstants.EMPTY;用来拼接字符串
2.如果读取的数据中存在换行符,而此换行符是夹在某一条数据里的,则需要读取多次进行拼接处理
String appendFlagCheck = AppConstants.EMPTY;
dataApp = dataApp.replace("-", "");
//若“概要”,“商品名字”,“商品管理项目”中存在换行符则需要读取多次进行拼接处理
if (!dataQ.isEmpty()) {
String dataStr[] = dataQ.split("\"",-1);
int countDataApp = dataApp.split("\t").length;
if (countDataApp != checkCount) {
//eg形式:商品名" [商品名,]
if (dataQ.contains("\"") && dataStr.length == 2 && StringUtils.isNotEmpty(dataStr[0]) && !StringUtils.isNotEmpty(dataStr[1])) {
dataApp += dataQ + "\t";
}
//eg形式:"商品名 [,商品名]
else if (dataQ.contains("\"") && dataStr.length == 2 && StringUtils.isNotEmpty(dataStr[1]) && !StringUtils.isNotEmpty(dataStr[0])) {
dataApp += dataQ + "\r\n";
}
//eg形式:正常的数据 "商品名"
else if (dataQ.contains("\"") && dataStr.length == 3) {
//eg形式:这一行的最后一个数据是正常数据。
int countDataApp2 = countDataApp + 1;
if (countDataApp2 == checkCount) {
dataApp += dataQ;
dataApp = dataApp.replace("-", "");
appendFlagCheck = Constants.SUCCESS;
}
else {
dataApp += dataQ + "\t";
}
}
//eg形式:不带双引号(概要或名字里面的内容)
else if (!dataQ.contains("\"")){
dataApp += dataQ + "\r\n";
}
//eg形式:开头第一个数据是一个单独的双引号--> " "正常数据"....
else {
dataApp += "\"" + "\t";
}
}
else{
//商品管理メモ中テキストの設定为这一行数据的最后一项时
//eg形式:这一行的最后一个数据:"FE(E后面存在换行)
if (dataQ.contains("\"") && dataStr.length == 2 && StringUtils.isNotEmpty(dataStr[1]) && !StringUtils.isNotEmpty(dataStr[0])) {
dataApp += dataQ + "\r\n";
}
//eg形式:这一行的最后一个数据:(E前面存在换行)EG"(彻底结束)
else if (dataQ.contains("\"") && dataStr.length == 2 && StringUtils.isNotEmpty(dataStr[0]) && !StringUtils.isNotEmpty(dataStr[1])){
dataApp += dataQ;
dataApp = dataApp.replace("-", "");
appendFlagCheck = Constants.SUCCESS;
}
//eg形式:这一行的最后一个数据:不带双引号(E前面存在换行)E(E后面也存在换行)
else if (!dataQ.contains("\"")){
dataApp += dataQ + "\r\n";
}
//eg形式:这一行的最后一个数据:最后一个引号前面有换行符FEG(换行符)"(彻底结束)
else {
dataApp += "\"";
dataApp = dataApp.replace("-", "");
appendFlagCheck = Constants.SUCCESS;
}
}
}
//eg形式:没有任何内容只有一个换行符
else {
dataApp += "\r\n";
}
if (appendFlagCheck == Constants.SUCCESS) {
return dataApp;
}
else {
return "-" + dataApp;//用逗号作为一个标识表示拼接未结束
}
String dataAppStr[] = dataApp.split("\t",-1);
3.如果表头列数与数据列数一致,则组成键值对形式用于存储数据
if (dataAppStr.length == checkCount) {
for (int p = 0; p < dataAppStr.length; p++) {
if (!dataAppStr[p].isEmpty()) {
dataAppStr[p] = dataAppStr[p].replace("\"", "");
}
paramData1.put(lineOneCellFirstStrList.get(p), dataAppStr[p]);
}
appendFlag = true;
}
}