Замена нескольких символов в строке в С# одним слоем

Мне интересно, можно ли заменить несколько символов в строке (например, символы &, и $), не используя несколько раз? Replace()? В настоящее время я использую его как

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

но это просто ужасно, и мне интересно, есть ли такая же небольшая, но эффективная альтернатива.

EDIT: Спасибо всем за ответы, к сожалению, у меня нет 15 репутации, необходимой для продвижения людей.

Ответ 1

Вы можете использовать Regex.Replace:

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

Ответ 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('&', '|', '$')));
}

Ответ 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, "[\$\|\&]", " ");