私はリスト文字列を持っており、各値には先頭の引用符が含まれています。今や、文字列のさらに下の引用符がある可能性があり、それらは残す必要があります。リストから引用符を削除する<string> linqを使用
List<string> strings = new List<string>();
strings.Add("'Value1");
strings.Add("'Values2 This 2nd ' should stay");
linqの方法はありますか?
私はリスト文字列を持っており、各値には先頭の引用符が含まれています。今や、文字列のさらに下の引用符がある可能性があり、それらは残す必要があります。リストから引用符を削除する<string> linqを使用
List<string> strings = new List<string>();
strings.Add("'Value1");
strings.Add("'Values2 This 2nd ' should stay");
linqの方法はありますか?
strings.ForEach(s => s = s.TrimStart('\''));
オリヴィエJacot-Descombes(それは、このソリューションが動作しないことを示している)によるEDIT:
List<string> strings = new List<string>();
strings.Add("'Value1");
strings.Add("'Values2 This 2nd ' should stay");
Console.WriteLine("Before:");
foreach (string s in strings) {
Console.WriteLine(s);
}
strings.ForEach(s => s = s.TrimStart('\''));
Console.WriteLine();
Console.WriteLine("After:");
foreach (string s in strings) {
Console.WriteLine(s);
}
Console.ReadKey();
これは、コンソール上で次の出力を生成します。
Before:
'Value1
'Values2 This 2nd ' should stay
After:
'Value1
'Values2 This 2nd ' should stay
strings.Select(s => s.StartsWith("'") ? s.Substring(1) : s);
strings = strings.Select(x => x.StartsWith("'") ? x.Substring(1) : x).ToList();
var result = strings.Select(s => s.TrimStart('\''));
注:これは( ')のすべての主要な発生を削除します。しかし、私はあなたが"''Value1"
のような文字列を持っていないと仮定します。
これにはLINQは本当に不要です。
strings.Add("'Value1".TrimStart('\''));
文字列は不変であるため、リストの内容は変更されません。したがって、TrimStart()を単独で使用することもできます。新しい文字列を計算してすぐにガベージコレクションの対象にするだけです。 – phoog
Yes phoog、彼は次のようなことをしなければなりません:Enumerable.Range(0、strings.Count - 1).ForEach(i => strings [i] = strings [i] .TrimStart( '\' ')); '。しかし、良いfor-loopでやっている方が簡単です。 –
提出されたすべてのソリューションで、新しい文字列が作成されます。結果を現在の変数に保存するか、拡張メソッドを作成できるので、ForEachを使用することにしました。なぜこれが投票に値するのかわからない。 – Brownman98