簡體   English   中英

用單個唯一字符替換字符串中的特殊字符

[英]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.

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