[英]Using Regex Replace instead of String Replace
我對Regex的了解不如預期,所以這似乎是一個愚蠢的問題。
我正在使用.Split(' ')
將string
拆分為string[]
。
目的是檢查單詞或替換任何單詞。
我現在遇到的問題是,要替換的單詞必須完全匹配 ,但是按照我拆分的方式,可能會有(
或[
包含拆分單詞。
到目前為止,為了解決這個問題,我正在使用類似這樣的方法:
formattedText.Replace(">", "> ").Replace("<", " <").Split(' ')
。
目前,這可以正常工作,但是我想合並更多特殊字符,例如[;\\\\/:*?\\"<>|&']
。
有沒有比我的替換方法(例如Regex)更快的方法? 我覺得我的路線遠未達到最佳答案。
編輯
This is an (example) string
將被替換為
This is an ( example ) string
如果要替換整個單詞,可以使用這樣的正則表達式來實現。
string text = "This is an example (example) noexample";
string newText = Regex.Replace(text, @"\bexample\b", "!foo!");
newText
將包含"This an !foo! (!foo!) noexample"
這里的關鍵是\\b
是單詞break元字符。 因此它將在行的開頭或結尾以及單詞字符(\\ w)和非單詞字符(\\ W)之間的過渡處匹配。 它與使用\\ w或\\ W的最大區別在於,它們在行的開頭或結尾不匹配。
我覺得這是你想要的正確的事情
如果要用這些->; \\ /:*?“ <> |&'符號代替
string input = "(exam;\\/:*?\"<>|&'ple)";
Regex reg = new Regex("[;\\/:*?\"<>|&']");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});
如果要替換除a-zA-Z0-9_以外的所有字符
string input = "(example)";
Regex reg = new Regex(@"\W");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.