Удалите последние "," из списка строк без помощи Substring и str.Length - 1 (C # 3.0) - PullRequest
0 голосов
/ 15 июля 2010

Рассмотрим приведенный ниже фрагмент кода

string src = "ibm,tcs";

string dest = src.Split(',').Select(i => i + "();,").ToArray().Aggregate((s, i) => s + i);

dest = dest.Substring(0, dest.Length - 1);

Что я делаю, так это то, что строка Source (здесь src) будет иметь список строк через запятую.

Окончательный результат будет: ibm();,tcs();

Как мы можем это понять, моя программа делает это.

Но я пользуюсь помощью dest.Substring(0, dest.Length - 1);за устранение последнего ",", который я строю в методе Select Extension.

Мне не нравится этот мой подход.

Есть ли другой красивый / элегантный способ сделать это?Я уверен, что кто-то определенно подойдет лучше:)

Также я буду рад, если получу решение с использованием Lambda & Extension Method.

Я использую C # 3.0 и dot netрамки 3.5

спасибо

Ответы [ 2 ]

5 голосов
/ 15 июля 2010

Просто используйте string.Join вместо Aggregate и не включайте запятую в предложение Select:

string dest = string.Join(",", src.Split(',')
                                  .Select(i => i + "();")
                                  .ToArray());

В .NET 4 вам даже не понадобится вызов ToArray() (поскольку в string.Join добавлены дополнительные перегрузки).

Или, как совершенно альтернативный подход:

string dest = src.Replace(",", "();,") + "();";
1 голос
/ 15 июля 2010
string dest = string.Join(",", src.Split(',').Select(i => i + "();").ToArray());

или

string dest = string.Join(",", Array.ConvertAll(src.Split(','), s => s + "();"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...