我正在使用ItextSharp從pdf讀取數據。檢查結果字符串看起來是正確的,但是string.Replace無法替換文本。String.Replace來自ItextSharp的數據
因此,我猜這是某種編碼問題,但我沒有把它固定下來。
我的代碼來導入PDF文本應該轉換成UTF8
PdfReader pdfReader = new PdfReader("file.pdf");
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.AppendLine(currentText);
}
pdfReader.Close();
然後我試圖更換三塊連字符和空格( - - )轉換爲3連字符( - )
input = input.Replace("-- -", "---");
刪除從PDF導入UTF8轉換不會有所作爲(見下面的截圖 - 替換功能後斷點,但文本仍然存在):
編輯:
這裏是一個sample file的鏈接。當以記事本或++打開時,它會顯示一系列空格和連字符(請參見帶有空白渲染的npp屏幕截圖)。但是,在c#中讀取時,此文件不會被解釋爲unicode連字符和Unicode空間。
請看[this](http://stackoverflow.com/a/10191879/231316)爲什麼你應該刪除整行'currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert ...'。行總是,總是錯,最好什麼也不做,最壞的情況是破壞數據。 –
謝謝,但我的字符串。替換仍然失敗。 –
請參閱編輯,我已經上傳了一個演示此問題的示例txt文件。 –