我试图在字符串中使用'\ 034'字段分隔符作为分隔符。 问题是,当我对“\ 034”+ opField进行硬编码并将其写入其工作的文件时,但是如果从文件中读取“\ 034”字符,则会将输出写为字符串“col1 \ 034col2”。尝试使用StringBuilder的,但它逃脱\ 034“\\ 034” 我使用下面的代码来读取文件的字符:Java使用 034作为字符串中的分隔符
try (BufferedReader br = new BufferedReader(new FileReader(fConfig))){
int lc = 1;
for(String line;(line = br.readLine())!=null;){
String[] rowList = line.split(delim);
int row_len = rowList.length;
if (row_len<2){
System.out.println("Incorrect dictionary file row:"+fConfig.getAbsolutePath()+"\nNot enough values found at row:"+line);
}else{
String key = rowList[0];
String value = rowList[1];
dictKV.put(key, value);
}
lc++;
}
}catch(Exception e){
throw e;
}
欢迎任何帮助......
[更新]:同样的事情发生在'\ t'字符上,如果编码正确,但是如果从文件中读取它的附加字符。“col0 \ tcol1”
if(colAl.toLowerCase().contains(" as ")){
String temp = colAl.replaceAll("[ ]+as[ ]+"," | ");
ArrayList<String> tempA = this.brittle_delim(temp,'|');
colAl = tempA.get(tempA.size()-1);
colAl = colAl.trim();
}else {
ArrayList<String> tempA = this.brittle_delim(colAl,' ');
colAl = tempA.get(tempA.size()-1);
colAl = colAl.trim();
}
if(i==0){
sb.append(colAl);
headerCols+=colAl.trim();
}else{
headerCols+= this.output_field_delim + colAl;
sb.append(this.output_field_delim);
sb.append(colAl);
}
}
}
System.out.println("SB Header Cols:"+sb.toString());
System.out.println("Header Cols:"+headerCols);
输出:
SB标题列数: SPRN_CO_ID \ 034FISC_YR_MTH_DSPLY_CD \ 034CST_OBJ_CD \ 034PRFT_CTR_CD \ 034LEGL_CO_CD \ 034HEAD_CT_TYPE_ID \ 034FIN_OWN_CD \ 034FUNC_AREA_CD \ 034HEAD_CT_NR
部首列数: SPRN_CO_ID \ 034FISC_YR_MTH_DSPLY_CD \ 034CST_OBJ_CD \ 034PRFT_CTR_CD \ 034LEGL_CO_CD \ 034HEAD_CT_TYPE_ID \ 034FIN_OWN_CD \ 034FUNC_AREA_CD \ 034HEAD_CT_NR
在上面的代码,如果我做的我得到正确的结果如下:
headerCols+= "\034"+ colAl;
输出: SPRN_CO_IDFISC_YR_MTH_DSPLY_CDCST_OBJ_CDPRFT_CTR_CDLEGL_CO_CDHEAD_CT_TYPE_IDFIN_OWN_CDFUNC_AREA_CDHEAD_CT_NR 的FS字符存在,即使他们在这里歌厅
您还没有发布相关的代码。你说“它把输出写成字符串”col1 \ 034col2'“,但是你没有包括写输出的代码*!这个代码很可能是问题所在(但它可能不是问题,它只是你输出到屏幕的方式的结果) –
你能举一个例子吗?我很确定'col0 \ tcol1'会在哪里发生,'col0'和'col1'是什么意思。 – Thomas
已更新输出代码 – vhora