Ich versuche, Feldtrennzeichen '\ 034' als Trennzeichen in einer Zeichenfolge zu verwenden. Das Problem ist, wenn ich "\ 034" + opField fest codiere und es in eine Datei schreibe, aber wenn das "\ 034" Zeichen aus einer Datei gelesen wird, schreibt es die Ausgabe als Zeichenfolge "col1 \ 034col2". I mit Stringbuilder versucht, aber es entgeht die \ 034 „\\ 034“ ich den folgenden Code bin mit dem Zeichen aus der Datei zu lesen.Java mit 034 als Trennzeichen in einer Zeichenfolge
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;
}
Jede Hilfe ist willkommen ...
[ update]: Dasselbe passiert mit dem Zeichen '\ t', wenn es gut codiert ist, aber wenn es aus einer Datei gelesen wird, wird es als Zeichen angehängt. "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);
Output:
SB-Header Cols: 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
Kopf Cols: 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
In dem obigen Code, wenn ich die folgend ich korrekte Ergebnisse bin immer:
headerCols+= "\034"+ colAl;
Ausgabe: SPRN_CO_IDFISC_YR_MTH_DSPLY_CDCST_OBJ_CDPRFT_CTR_CDLEGL_CO_CDHEAD_CT_TYPE_IDFIN_OWN_CDFUNC_AREA_CDHEAD_CT_NR Die FS-Zeichen werden dort, auch wenn sie hier sind geting
entfernt
Sie haben nicht den entsprechenden Code geschrieben. Sie sagen "es schreibt die Ausgabe als Zeichenfolge" col1 \ 034col2 "." Aber Sie haben nicht den Code *, der die Ausgabe * schreibt geschrieben! Dieser Code ist höchstwahrscheinlich das Problem ist (aber es ist wahrscheinlich kein Problem, es ist nur ein Ergebnis der Art und Weise, wie Sie die Ausgabe auf den Bildschirm schreiben) –
Können Sie ein Beispiel geben? Ich bin mir ziemlich sicher, wo das 'col0 \ tcol1' passieren würde und was' col0' und 'col1' gemeint sind. – Thomas
Aktualisierte den Ausgabecode – vhora