簡體   English   中英

使用正則表達式替換而不是字符串替換

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

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