3

例:- 次の入力 Input の 2 を 0 に置き換えます。 string strInput = "21212121"; 出力: "01010101"

LINQ でそれを行う方法。注: dataType はstringです。

4

4 に答える 4

12

なぜLINQでそれを行う必要があるのか​​ 、単純なstring.Replaceでうまくいくはずです。

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

編集: LINQ を使用する必要がある場合は、次のようになります。

string  newStr = new string(str.Select(r => (r == '2' ? '0' : r)).ToArray());
于 2012-11-12T12:41:57.933 に答える
9

面接官にとって

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

文字列を一連の文字として扱うことができることを理解しているかどうかを確認するつもりだったと思います。インタビューには、実際のプログラミングとは関係のない質問が含まれることがよくあります。new個人的には、修飾子を使用した継承ツリーに関する質問は嫌いです。

于 2012-11-12T12:46:07.870 に答える
1

単一の文字を変更する場合は、引数を取るオーバーロードをReplacechar使用できます。

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

これは、文字列を受け入れるオーバーロードよりもわずかに効率的である可能性があります。


何らかの理由でどうしてもLINQ使用する必要がある場合は、次のようにすることができます。

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

ただし、これを本番コードで行うべきではありません。より読みにくく、効率が悪いstring.Replace

于 2012-11-12T12:43:41.703 に答える
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);
于 2012-11-12T12:45:58.973 に答える