В C #: добавление кавычек вокруг строки в списке строк, разделенных запятыми - PullRequest
50 голосов
/ 31 октября 2008

Это, вероятно, простой ответ, но мне не хватило кофе, чтобы понять это самостоятельно:

Если бы у меня была строка с запятой, такая как:

string list = "Fred,Sam,Mike,Sarah";

Как получить каждый элемент, добавить кавычки вокруг него и вставить его обратно в строку, например:

string newList = "'Fred','Sam','Mike','Sarah'";

Я предполагаю, что итерации по каждому из них были бы началом, но после этого я был озадачен.

Одно уродливое решение:

int number = 0;
string newList = "";
foreach (string item in list.Split(new char[] {','}))
{
    if (number > 0)
    {
        newList = newList + "," + "'" + item + "'";
    }
    else
    {
        newList = "'" + item + "'";
    }
    number++;
}

Ответы [ 15 ]

0 голосов
/ 15 июня 2016

Я нашел новое решение для этой проблемы

Я связываю список по значениям выбранных элементов из сетки, используя linq, после чего добавляю строку с разделителями-запятыми для каждой коллекции строк, используя свойства String.Join ().

String str1 = String.Empty;
String str2 = String.Empty;              
//str1 = String.Join(",", values); if you use this method,result "X,Y,Z"
     str1 =String.Join("'" + "," + "'", values);
//The result of str1 is "X','Y','Z"
     str2 = str1.Insert(0, "'").Insert(str1.Length+1, "'");
//The result of str2 is 'X','Y','Z'

Надеюсь, это будет полезно !!!!!!

0 голосов
/ 15 декабря 2015

Вот решение C # 6, использующее интерполяцию строк.

string newList = string.Join(",", list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Select(x => $"'{x}'")
                       .ToList());

Или, если вы предпочитаете вариант C # 5 с String.Format:

string newList = string.Join(",", list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Select(x => String.Format("'{0}'", x))
                       .ToList());

Использование StringSplitOptions удалит все пустые значения, поэтому у вас не будет пустых кавычек, если вы пытаетесь этого избегать.

0 голосов
/ 31 октября 2008

Вы собираетесь обрабатывать много CSV? Если это так, вы должны также рассмотреть возможность использования библиотеки для этого. Не изобретай велосипед. К сожалению, я не нашел библиотеку столь же простую, как библиотека Python CSV, но я видел FileHelpers (бесплатно) , просмотренную в журнале MSDN Magazine , и она выглядит довольно хорошо. Вероятно, есть и другие бесплатные библиотеки. Все зависит от того, сколько обработки вы будете делать, хотя. Часто он растет и растет, пока вы не поймете, что вам лучше использовать библиотеку.

0 голосов
/ 31 октября 2008

Мой "менее изощренный" подход ... Я полагаю, что всегда полезно использовать StringBuilder, потому что список может быть очень большим.

string list = "Fred,Sam,Mike,Sarah";
StringBuilder sb = new StringBuilder();

string[] listArray = list.Split(new char[] { ',' });

for (int i = 0; i < listArray.Length; i++)
{
    sb.Append("'").Append(listArray[i]).Append("'");
    if (i != (listArray.Length - 1))
        sb.Append(",");
}
string newList = sb.ToString();
Console.WriteLine(newList);
0 голосов
/ 31 октября 2008

Реализация C # в JavaScript-решении @ PhiLho выглядит следующим образом:

Regex regex = new Regex(
    @"\b",
    RegexOptions.ECMAScript
    | RegexOptions.Compiled
    );

string list = "Fred,Sam,Mike,Sarah";
string newList = regex.Replace(list,"'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...