如何使用LINQ替换字符串中的字符

时间:2012-11-12 12:40:42

标签: c# .net string linq

例如: - 对于以下输入,将0替换为0 输入:string strInput =“21212121”; 输出:“01010101”

如何使用LINQ。注意:dataType为字符串

4 个答案:

答案 0 :(得分:11)

为什么你需要使用LINQ,简单的string.Replace应该做的伎俩。

string str = "21212121".Replace("2","0");

编辑:如果你必须使用LINQ,那么可能是这样的:

string  newStr = new string(str.Select(r => (r == '2' ? '0' : r)).ToArray());

答案 1 :(得分:9)

对于你的面试官

string output = new String(input.Select(ch => ch == '2' ? '0' : ch).ToArray());

我认为打算看看你是否理解字符串可以被视为字符序列。面试通常有与现实生活中的编程无关的问题。我个人讨厌使用new修饰符来继承树的问题。

答案 2 :(得分:1)

要更改单个字符,您可以使用overload of Replace that takes char arguments

string s = "21212121";
s = s.Replace('2', '0');

这可能比接受字符串的重载更有效。


如果您因某种原因必须使用LINQ,那么您可以这样做:

s = new string(s.Select(c => c == '2' ? '0' : c).ToArray());

但是你不应该在生产代码中这样做。它比string.Replace更难阅读,效率更低。

答案 3 :(得分:0)

string strInput = "21212121";

char from = '2';
char to = '0';

var strOutput = new string(strInput.Select(c => c.Equals(from) ? to : c)
                                   .ToArray());

Console.WriteLine(strOutput);