我試圖在字符串中使用'\ 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