簡體   English   中英

字符串中的C#正則表達式非字母字符

[英]c# Regex non letter characters from a string

我的術語可能在此處有點過時,但是我試圖從C#中的字符串中去除非字母,因此刪除破折號&符等,但保留重音字符和漢字之類的內容。 我在SO上看到的所有C#示例都有一個正則表達式,例如new Regex("[^a-zA-Z0-9 -]"); ,但我的需求超出了ASCII字符的范圍。

string input = "I- +AM. 相關 AZURÉE& /30%";

string output = "I AM 相關 AZURÉE 30";

一個很好的起點是根據字符Unicode字符類刪除字符。 例如,此代碼刪除所有標點符號,符號或控制字符的內容:

string input = "I- +AM. 相關 AZURÉE& /30%";
var output = Regex.Replace(input, "[\\p{S}\\p{C}\\p{P}]", "");

您也可以通過僅允許某些類來嘗試白名單方法。 例如,這僅保留字母,變音符號,數字和空格的字符:

var output = Regex.Replace(input, "[^\\p{L}\\p{M}\\p{N}\\p{Z}]", "");

看到它在行動

string result = string.Concat(input.Where(c => Char.IsLetterOrDigit(c)));

暫無
暫無

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

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