2015-12-18 33 views
0

在開始讀取數據流的刪除空格我試着跟隨片段讀取文件如何通過BufferReader

mFileReader = new FileReader(mAutoUpgradeFile); 
mBufferedReader = new BufferedReader(mFileReader); 
mStringBuilder = new StringBuilder(); 
String line=null; 
while(null != (line=mBufferedReader.readLine())){ 
    mStringBuilder.append(line); 
    Log.d(TAG,"read line ="+line+"\n"); 
} 

aaaaa 
bbbbbb 
ccccccccc 
dddddddddd 

輸出通過的readLine

mAutoUpgradeFile內容

read line = space aaaaa

讀線= BBBBBB

更新2015年12月18日第一次

打印線的第一個字節的ASCII 它同線下:

enter image description here

什麼是否表示在這種情況下?

更新2015年12月18日二時間

可由UTF-8 + BOM格式

改變的編碼格式被引入到UTF-8 + ! BOM格式

這個問題解決

謝謝大家。

+0

這可能是做的最快方式。 'line =!line.isEmpty()&& line.charAt(0)==''? line.substring(1):line;' – WalterM

回答

0

String#trim()從字符串中刪除任何前導和尾隨空格。

返回字符串的一個副本,其中前後空白省略。

除此之外,您還可以使用String#replaceFirst(String regex, String replacement)

替換此字符串與給定替換給定的正則表達式匹配的第一個字符串。

而使用像一個正則表達式:

line= line.replaceFirst("^ ", ""); 
+0

儘管它可能會解決這個問題,但我認爲OP可能更加奇怪爲什麼有一個空間。 – Zymus

+0

Hi @ rakeb.mazharul,感謝您的反饋,我已更新問題描述 – caopeng

0

使用String#trim()方法或line.replaceAll("^\\s+|\\s+$", "")將削減從兩個端部的空白。

對於左側裝飾:

line.replaceAll("^\\s+", ""); 

。權利裝飾:

line.replaceAll("\\s+$", ""); 
+0

感謝您的反饋,我已更新問題描述 – caopeng

0

如果「XXX」跟蹤打印出從線讀取的第一個字符,那麼你有這樣一行由unicode字符65279開頭(我不知道代表什麼),所以它實際上並不是空白也不是空白字符。

如果您確定在閱讀某一行時您希望允許哪些字符範圍,我建議您修剪脫離該範圍的主要出現次數。

例如:要修剪的所有字符出A-Z,A-Z,以及0-9:

line=line.replaceFirst("[^a-zA-Z0-9]*", "");