Замена нескольких разных символов в строке - PullRequest
3 голосов
/ 22 апреля 2010

Я пытаюсь заменить несколько символов в некоторой строке 14/04/2010 17:12:11 и получить, например, следующий результат:

14%04%2010%17%12%11

Я знаю о методе Replace, но его определение выглядит как Replace(Char,Char). Что означает использование его 3 раза в цепочке методов. Не выглядит идиоматично. Как решить проблему оптимальным способом? Регулярные выражения? Есть ли способы избежать их?

Ответы [ 4 ]

8 голосов
/ 22 апреля 2010

Цепочка это:

string s1 = "14/04/2010 17:12:1";

string s2 = s1.Replace("/","%").Replace(" ","%").Replace(":","%");
8 голосов
/ 22 апреля 2010
Regex.Replace(myString, "[/ :]", "%");

Простой, но элегантный!

0 голосов
/ 22 апреля 2010

Если вам часто приходится это делать, напишите метод:

static string Replace(string s, string c, char n)
{            
    for (int i = 0; i < c.Length; i++)
        s = s.Replace(c[i], n);            
    return s;
}

, например

string s1 = "14/04/2010 17:12:11";                
string s2 = Replace(s1, "/ :", '%'));
0 голосов
/ 22 апреля 2010

Альтернативный Regex подход, хотя я не согласен с его использованием здесь. Это просто заменяет любые нечисловые символы:

string date2 = Regex.Replace(date1, @"\D", "%");
...