C#仅用一个字符替换所有出现的字符

C#仅用一个字符替换所有出现的字符,c#,string,replace,C#,String,Replace,假设我有这个字符串,“%%%ABC”,我想用一个“%”替换所有的“%%”,所以它应该是“%ABC” 如果其“%%A%%B%%C%%”,则应为“%A%B%C%” 我应该如何执行此操作?有一个使用Regex的解决方案。替换方法: private static string TruncatePercents(string input) { return Regex.Replace(input, @"%+", "%"); } 如果要将一个或多个非单词字符替换为同一个非单词字符,请使用此选项 s

假设我有这个字符串,
“%%%ABC”
,我想用一个
“%”替换所有的
“%%”
,所以它应该是
“%ABC”

如果其
“%%A%%B%%C%%”
,则应为
“%A%B%C%”


我应该如何执行此操作?

有一个使用
Regex的解决方案。替换
方法:

private static string TruncatePercents(string input)
{
    return Regex.Replace(input, @"%+", "%");
}

如果要将一个或多个非单词字符替换为同一个非单词字符,请使用此选项

string result = Regex.Replace(str, @"(\W)+", "$1");
这将对其进行排序:

    string ProcessText(string s)
    {
       return Regex.Replace(s, @"%+", "%");
    }
编辑被打败了,为了使我的稍微不同,并为不同的纤度提供范围:

    private void button1_Click(object sender, EventArgs e)
    {
        label1.Text = ProcessText(textBox1.Text, "%", "#");
    }

    string ProcessText(string s, string delim, string replaceWith)
    {
       return Regex.Replace(s, @""+ delim + "+", replaceWith);
    }

试试正则表达式

        string strTest = "%%%A%%B%%C%%";
        string strPattern = "%+";
        RegexOptions opt = RegexOptions.IgnoreCase;
        var reg = new Regex(strPattern, opt);
        var strReplaceResult = reg.Replace(strTest, "%");

结果将是“%A%B%C%”

并且它只是用于
%
还是您也有
“##A#B#C”
?到目前为止,我只处理“%”。我面临的问题是,我有一个程序,用户可以使用SQL过滤器过滤值。如果他们输入诸如“%%%ABC”之类的内容而不是“%ABC”,我的程序就会冻结,当然我会将“%”转换为“.*”以符合正则表达式。