[英]Replacing special chars in a string with a single unique char
我有一個像這樣的字符串:
string inputStr = "Name*&^%LastName*#@";
以下正則表達式將所有特殊字符替換為“-”
Regex rgx = new Regex("[^a-zA-Z0-9 - _]");
someStr = rgx.Replace(someStr, "-");
產生的輸出類似:Name --- LastName ---
如何用單個“-”替換“ ---”,因此輸出如下所示:
Name-LastName
因此,問題是如何將所有特殊字符替換為單個“-”?
問候。
嘗試這個
Regex rgx = new Regex("[^a-zA-Z0-9 \- _]+");//note - character is escaped
要么
Regex rgx = new Regex("[^a-zA-Z0-9 _-]+");//or use - as last character
但這將給出Name-LastName-
可以嗎?
如果不需要-
在最后的位置,您也可以使用以下代碼。 歸功於@MatthewStrawbridge。 您可以在評論中看到。
string someStr = rgx.Replace(inputStr, "-").TrimEnd('-');
將輸出Name-LastName
。
編輯:正如@pguardiario在評論中指出的那樣,更新了我的轉義答案-
因為range( []
)對於-
字符具有特殊含義。 如果需要-
作為文字,我們需要對其進行轉義或使其成為字符類的第一個或最后一個字符,以使其表現為文字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.