替换字符串中的几个不同字符

4

我尝试替换一些字符串中的字符 14/04/2010 17:12:11,并获得如下结果:

14%04%2010%17%12%11

我知道关于方法Replace,但它的定义看起来像是Replace(Char,Char)。这意味着在方法链中要使用3次。看起来不太符合惯用方式。有什么最优解决方案吗?正则表达式?有任何转义方法吗?

注意:Replace也可以像这样作为构造函数:Replace(String, String) - D'Arcy Rittich
4个回答

8
Regex.Replace(myString, "[/ :]", "%");

简单,却优雅!


有没有一种简单的方法,而不使用正则表达式? - akrisanov
1
你需要将输入字符串作为第一个参数传递吗? - sparkkkey
2
正则表达式是简单的方法。 - James B
正如你所指出的,唯一的其他简单方法是调用Replace三次 -- myStr = myStr.Replace('/', '%').Replace(' ', '%').Replace(':', '%'); - michalburger1
现在看起来不错。我无法想象正则表达式为我节省了多少行代码! - sparkkkey

8
链式编程:
string s1 = "14/04/2010 17:12:1";

string s2 = s1.Replace("/","%").Replace(" ","%").Replace(":","%");

1
请注意,为了获得更好的性能,您可以使用字符串 s2 = s1.Replace('/','%').Replace(' ','%').Replace(':#','%');(请注意我用''替换了"")。 实际上,这比正则表达式的变体要快得多。 - Foxfire

0

如果你需要经常这么做,编写一个方法:

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
一个备选的正则表达式方法,尽管我不同意在这里使用它。这只是替换任何非数字字符:
string date2 = Regex.Replace(date1, @"\D", "%");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接