簡體   English   中英

通過正則表達式替換和刪除字符串

[英]Replace and remove a string via regex

這是我第一次使用正則表達式。

下面的字符串

var value ="abc ltd as yes"

需要更改為

var value ="abc Limited"

我有以下代碼:

  public static string Attempt_Prefix_Removal( string prefix, string replacement, bool remove = false)
    {

        if (remove == true)
        {

            var yesy = $"(?<!prefix )" + prefix + ".*";

            var test = Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + ".*", replacement );



        }

        var output = (remove == true) ? Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + ".*", replacement) :  Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + "", replacement);

        return output;


    }

傳遞給方法的值是

prefix ="ltd", replacement = "Limited" , remove = ture

運行代碼后,結果是

abc Limited as yes 

我需要什么來改變得到的乘坐as yes 謝謝

private string regexOp(string sentence, string word, string wordtoReplace, bool isRemove)
    {
        var retValue = sentence;
        if (isRemove)
        {
            var Pattern = "^.*?(?=" + word + ")";
            Match result = Regex.Match(sentence, @Pattern);
            if (!string.IsNullOrEmpty(result.Value))
                retValue = result + wordtoReplace;
        }
        else
            retValue = Regex.Replace(sentence, word, wordtoReplace);

        return retValue;
    }

嘗試這種方法,它將與您期望的動態效果一起使用,如果確實對您有所幫助,請不要忘記將其標記為答案,

您可以利用此代碼:

var prefix ="ltd"; var replacement = "Limited";
var pat = $@"(?s)(?<!\w){Regex.Escape(prefix)}(?!\w){remove ? ".*" : string.Empty}";
return Regex.Replace(val, pat, replacement.Replace("$", "$$"));

在線觀看C#演示

這里的要點是:

  • (?s) -將允許. 匹配換行符(以防您在模式中使用.*
  • (?<!\\w){Regex.Escape(prefix)}(?!\\w) - (?<!\\w)負向后搜索將失敗,如果當前位置前面有單詞char(您可以進一步(?<!\\w){Regex.Escape(prefix)}(?!\\w)根據您的要求調整后向模式
  • {remove ? ".*" : string.Empty} {remove ? ".*" : string.Empty} -這將附加.* (如果removetrue )。

暫無
暫無

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

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