1

特定の区切り文字で分割し、各メンバーから先頭と末尾の空白を削除したい文字列があります。現在、コードは次のようになっています。

string s = "A, B, C ,D";
string[] parts = s.Split(',');
for(int i = 0; i++; i< parts.Length)
{
     parts[i] = parts[i].Trim();
}

1行に収まるようにラムダでこれを行う方法があるはずだと思いますが、頭を包むことはできません。LINQ には近づかない方がよいと思いますが、解決策として LINQ に反対しているわけでもありません。

string s = "A, B, C ,D";
string[] parts = s.Split(','); // This line should be able to perform the trims as well

私は最近 Python で作業していますが、それが C# の問題に対する解決策について考え直すきっかけになったと思います。

4

3 に答える 3

8

どうですか:

string[] parts = s.Split(',').Select(x => x.Trim()).ToArray();
于 2013-02-25T19:13:15.050 に答える
4
var parts = s.Split(',').Select(part => part.Trim());
于 2013-02-25T19:13:31.723 に答える
1

LINQ を本当に回避したい場合は、複数の文字に分割し、「,」とスペースの間にある余分な「空の」エントリを破棄できます。奇妙な結果になる可能性があることに注意してください (たとえば、「,」区切り文字が連続している場合、その間に空の文字列が入ることはありません)。

s.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);

これはサンプル入力に対して機能しますが、非常に壊れやすいです。たとえば、@Oscar が指摘しているように、トークンに空白があるとトークンも分割されます。代わりに、LINQ ベースのオプションのいずれかを使用することを強くお勧めします。

于 2013-02-25T19:18:58.550 に答える