2011-09-28 55 views
0

我想在UTF-16格式的文件中找到某些字符。什麼是跳過Unicode字符的最快方法

我知道我想跳過多少個字符。我正在使用TextReader.ReadBlock命令來讀取我想跳過的所有字符的臨時數組,但我相信設置位置會更快。我只是不知道如何確定新的職位。

任何想法如果您想要跳過多少個字符,跳到一個unicode文件中某個位置的最快方法是什麼?

+0

你的文件和跳過塊有多大? –

+0

他們得到了100兆字節 – Nick

+0

由於utf-16編碼的問題,你不知道有多少cr/lf行結束字符跳過而沒有實際讀取文件。 –

回答

0

跳過一個塊並不容易,這需要相對定位。

如果你可以計算下一個塊(從文件開始的偏移量)的begiining它是可行的:

 int nextPos = ...; 

     reader.DiscardBufferedData(); 
     reader.BaseStream.Position = nextPos; 
     line = reader.ReadLine(); 

您可能需要調整您的計算,因爲UTF-16文件可以有一個BOM (2個前導字節)。

-1

考慮到這個os UTF-16而不是UTF-8(其中字符大小可以變化),每個字符有2個字節。所以要跳過x個字符,您必須跳過x * 2個字節。

+0

UTF-16也可以包含pseuo對(4字節/字符)。非常不可能,但仍然。你將不得不同步TexReader和流,棘手。 –

+0

只有當你忽略組合字符,代理等時,這纔是真實的。 –

+0

@亨克:我知道的代理項目在.NET中分爲2個字節,每個字節2個字節。所以他們應該「符合」一般規則。 – Tigran

相關問題