繁体   English   中英

用Regex.Replace替换String.Replace

[英]Replace String.Replace with Regex.Replace

private string Check_long(string input)
{
    input = input.Replace("cool", "supercool");
    input = input.Replace("cool1", "supercool1");
    input = input.Replace("cool2", "supercool2");
    input = input.Replace("cool3", "supercool3");
    return input;
}

private string Check_short(string input)
{    
    input = Regex.Replace(input, "cool", "supercool", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool1", "supercool1", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool2", "supercool2", RegexOptions.IgnoreCase);
    input = Regex.Replace(input, "cool3", "supercool3", RegexOptions.IgnoreCase);
    return input;
}

String.Replace的旧解决方案工作正常。 但它不支持不区分大小写。 所以我不得不检查Regex.Replace ,但现在它不起作用。 这是为什么 ?

您的新代码应该可以正常工作。 请注意,您还可以使用捕获组保留输入的大小写:

private string Check_short(string input)
{    
    return Regex.Replace(input, "(cool)", "super$1", RegexOptions.IgnoreCase);
}

在这里工作正常:

        string input = "iiii9";
        input = Regex.Replace(input, "IIII[0-9]", "jjjj" , RegexOptions.IgnoreCase);
        label1.Text = input;

产量

jjjj

正则表达式不像string.replace那样工作。 您需要围绕要尝试过滤的内容构建正则表达式。

private string Check_short(string input)
{    
    input = Regex.Replace(input, ".*(cool).*", "supercool", RegexOptions.IgnoreCase);
    return input;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM