2014-03-12 54 views
0
String str[] = {"1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||1||7707||0||" 
      + "0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441^^1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||" 
      + "1||7707||0||0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441","1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||1||7707||0||" 
        + "0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441^^1000458551||A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F||" 
        + "1||7707||0||0||1002||1373569142000||HTC One||val||4.1.2||0||1.01.20130206.15441"};  

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
for(String p:str){ 
     String Recordstore[] = p.split("\\^\\^"); 
     long len = Recordstore.length; 
     long counter = 0; 
     StringBuffer finalRecord = new StringBuffer(); 
     for (String rec : Recordstore) { 
      rec = rec.replaceAll("\\|\\|", "|"); 
      if (counter != len - 1) 
       finalRecord.append(rec).append(System.lineSeparator()); 
      else 
       finalRecord.append(rec); 
      counter++; 
     } 
    baos.write(finalRecord.toString().getBytes()); 
    } 
ByteArrayInputStream object = new ByteArrayInputStream(
      baos.toByteArray()); 
String pr=""; 
    for(int y = 0 ; y < 1; y++) { 
     while((c= object.read())!= -1) { 
      pr+=(char)c; 
     } 
     System.out.println(pr); 
     object.reset(); 
     } 

將字符串轉換爲字節並重新檢查字節後,我看到新行字符丟失,字符串合併在一行中。 如何即使在轉換爲字節後仍能保留新的行字符?如何在轉換爲字節後在字符串中保留換行符?

樣本輸出是: 添加新行的字符串和打印字符串給出:

1000458551 | A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F | 1 | 7707 | 0 | 0 | 1002 | 1373569142000 | HTC一個| VAL | 4.1.2 | 0 | 1.01.20130206.15441 1000458551 | A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F | 1 | 7707 | 0 | 0 | 1002 | 1373569142000 | HTC一個| VAL | 4.1.2 | 0 | 1.01.20130206.15441

將其轉換爲字節,並打印該字符串後

1000458551 | A2101710 46D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F | 1 | 7707 | 0 | 0 | 1002 | 1373569142000 | HTC一個| VAL | 4.1.2 | 0 | 1.01.20130206.154411000458551 | A210171046D86F9F6EE21B66FE9B1441E20EC1DEF9654A2D092162591C01D26F | 1 | 7707 | 0 | 0 | 1002 | 1373569142000 | HTC一個| VAL | 4.1。 2 | 0 | 1.01.20130206.15441

感謝提前

+0

什麼換行符? –

+0

我已將System.lineSeparator()添加到最終記錄。但是,在將其轉換爲字節並重新檢查字節後,我沒有看到新行。 – user3218089

+0

你的意思是System.getProperty(「line.separator」); ? –

回答

0

因爲該行從未執行的答覆。

finalRecord.append(rec).append(System.lineSeparator()); 

我不知道爲什麼你分割字符串是這樣的:

String Recordstore[] = p.split("\\^\\^"); 

顯然,陣列Recordstore.length()永遠是1,因爲沒有在原始字符串的任何^^。因此counter != len - 1將始終是false

更新:

我做這一行的一些變化:

baos.write(finalRecord.append(System.lineSeparator()).toString().getBytes()); 
+0

我已經在我的問題中進行了更改,顯然我添加了錯誤的字符串,但問題仍然存在。 – user3218089

+0

@ user3218089我給你的新字符串拍了一張照片。問題是你忘了在不同'finalRecord'之間添加newLineSeperater。 'finalRecord'內的newLineSeperater運行良好。 – Jiang

相關問題