簡體   English   中英

從VB.NET中的輸入字符串中刪除未知的壞字符

[英]Removing unknown bad character from input string in VB.NET

在從字符串中刪除未知的錯誤字符時遇到一些問題。 它僅顯示為一個方框(表示我選擇的字體中無法顯示的字符)。

我嘗試了多種刪除方式,最成功的是使用正則表達式刪除任何不允許使用的字符。 那行得通。 問題是,允許使用的字符很多,基本上是任何字符,並且鑒於輸入的范圍很廣,我可能無法解釋所有字符。 另外,性能需要提高速度(基本上是滾動控制台窗口。)

還有其他格式化字符串的方式來刪除這些不可顯示的字符嗎?

我正在使用WPF文本框顯示文本,並使用VB.net作為后端代碼。

編輯:忘記添加帶有特殊字符的字符串不能從文本框中復制到剪貼板。 因此,我無法將其放在另一個程序中並確定它是什么字符。

這里的例子:

以下正則表達式會將您的字符串清除為嚴格的ASCII字符集。

string plainText = Clipboard.GetText(TextDataFormat.Text);

// Allow ASCII base - https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block)  for readability below or equivalently    https://en.wikipedia.org/wiki/ASCII

//non-printable characters range (\u0000-\u001F)

//remove "bad" non-printable control characters except Horizontal Tab, Line Feed, Carriage Return
//\uxxxx is unicode for the character, make 1st link easily translated. 

ascciiText = Regex.Replace(plainText, @"[\u0000-\u0008|\u000B-\u000C|\u000E-\u001F|\u0080-\u009F]", string.Empty);

//remove everything outside strict ASCII only range and delete control character (U+007F) \u007F which is Deleted character

asciiText = Regex.Replace(plainText, @"[^\u0000-\u007E]", string.Empty);

原來我的問題是字符串中的Ascii(0)空字符。 我遇到的麻煩是“ ASC”功能似乎根本不想打印它們。 我設法使用類似以下[\\ x00- \\ x07]的正則表達式來跟蹤它們,並使用正則表達式替換將所有匹配值替換為空字符串。 我縮小了范圍,直到找到正確的字符並僅替換為該字符。

我鼓勵任何有類似問題的人考慮使用正則表達式來匹配一組字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM