【问题标题】:Replacing multiple characters in a string in c# by a one liner用一个衬里替换c#中字符串中的多个字符
【发布时间】:2013-07-30 06:25:43
【问题描述】:

我想知道的是是否可以替换字符串中的多个字符(例如,&、| 和 $ 字符)而不必多次使用 .Replace() ?目前我正在使用它作为

return inputData.Replace('$', ' ').Replace('|', ' ').Replace('&', ' ');

但这太糟糕了,我想知道是否有类似的小而有效的替代方案。

编辑:感谢大家的回答,不幸的是,我没有为人们投票所需的 15 名声望

【问题讨论】:

标签: c# .net replace


【解决方案1】:

你可以使用Regex.Replace:

string output = Regex.Replace(input, "[$|&]", " ");

【讨论】:

  • 甚至不需要转义,+1
【解决方案2】:

你可以使用Split函数和String.Join next:

String.Join(" ", abc.Split('&', '|', '$'))

测试代码:

static void Main(string[] args)
{
     String abc = "asdfj$asdfj$sdfjn&sfnjdf|jnsdf|";
     Console.WriteLine(String.Join(" ", abc.Split('&', '|', '$')));
}

【讨论】:

  • 应该是...Join(" ", ...吧?
【解决方案3】:

可以使用Regex,但如果您出于某种原因希望避免使用它,请使用以下静态扩展:

public static string ReplaceMultiple(this string target, string samples, char replaceWith) {
    if (string.IsNullOrEmpty(target) || string.IsNullOrEmpty(samples))
        return target;
    var tar = target.ToCharArray();
    for (var i = 0; i < tar.Length; i++) {
        for (var j = 0; j < samples.Length; j++) {
            if (tar[i] == samples[j]) {
                tar[i] = replaceWith;
                break;
            }
        }
    }
    return new string(tar);
}

用法:

var target = "abc123abc123";
var replaced = target.ReplaceMultiple("ab2", 'x');
//replaced will result: "xxc1x3xxc1x3"

【讨论】:

    【解决方案4】:

    怎么样:

    return Regex.Replace(inputData, "[\$\|\&]", " ");
    

    【讨论】:

    • 此代码无法编译。你必须双重转义你的正则表达式,或者你必须在你的字符串前面加上@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多