В C#: Добавьте, что Кавычки вокруг строки в запятой разграничили список строк

Чтобы добавить информацию из другой популярной структуры, Google Closures, см. их класс dom / classes :

goog.dom.classes.add(element, var_args)

goog.dom.classes.addRemove(element, classesToRemove, classesToAdd)

goog.dom.classes.remove(element, var_args)

. Для выбора элемента используется один параметр goog.dom.query с селектором CSS3:

var myElement = goog.dom.query("#MyElement")[0];

52
задан Bob Wintemberg 31 October 2008 в 15:56
поделиться

9 ответов

string s = "A,B,C";
string replaced = "'"+s.Replace(",", "','")+"'";

спасибо за комментарии, я пропустил внешние кавычки.

, Конечно.. если бы источник был пустой строкой, Вы хотели бы дополнительные кавычки вокруг этого или нет? И что, если вход был набором пробелов...? Я имею в виду, для предоставления 100%-го полного решения, которое я, вероятно, попросил бы списка модульных тестов, но я надеюсь, что мой инстинкт пищеварительного тракта ответил базовый вопрос.

Обновление : основанная на LINQ альтернатива была также предложена (с дополнительным преимуществом использования Строки. Формат и поэтому не имеющий необходимость волноваться о продвижении/запаздывании кавычек):

string list = "Fred,Sam,Mike,Sarah";
string newList = string.Join(",", list.Split(',').Select(x => string.Format("'{0}'", x)).ToList());
79
ответ дан FOR 7 November 2019 в 19:05
поделиться

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

0
ответ дан Ryan 7 November 2019 в 19:05
поделиться
string[] bits = list.Split(','); // Param arrays are your friend
for (int i=0; i < bits.Length; i++)
{
    bits[i] = "'" + bits[i] + "'";
}
return string.Join(",", bits);

Или Вы могли использовать LINQ, особенно с версией Строки. Соединение, которое поддерживает IEnumerable<string>...

return list.Split(',').Select(x => "'" + x + "'").JoinStrings(",");

существует реализация JoinStrings в другом месте на ТАК... Я взгляну для него.

РЕДАКТИРОВАНИЕ: Ну, нет вполне JoinStrings, о котором я думал, таким образом, здесь это:

public static string JoinStrings<T>(this IEnumerable<T> source, 
                                    string separator)
{
    StringBuilder builder = new StringBuilder();
    bool first = true;
    foreach (T element in source)
    {
        if (first)
        {
            first = false;
        }
        else
        {
            builder.Append(separator);
        }
        builder.Append(element);
    }
    return builder.ToString();
}

В эти дни string.Join имеет универсальную перегрузку вместо этого, хотя, таким образом, Вы могли просто использовать:

return string.Join(",", list.Split(',').Select(x => $"'{x}'"));
24
ответ дан Jon Skeet 7 November 2019 в 19:05
поделиться

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

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

string list = "Fred,Sam,Mike,Sarah";
string newList = regex.Replace(list,"'");
0
ответ дан Community 7 November 2019 в 19:05
поделиться

Я думаю, что самая простая вещь была бы к Split и затем Join .

string nameList = "Fred,Sam,Mike,Sarah";
string[] names = nameList.Split(',');
string quotedNames = "'" + string.Join("','", names) + "'";
4
ответ дан Jacob Carpenter 7 November 2019 в 19:05
поделиться

Я не могу записать код C#, но этот простой код JavaScript, вероятно, легко адаптировать:

var s = "Fred,Sam,Mike,Sarah";
alert(s.replace(/\b/g, "'"));

Это просто заменяет границы (запустите/закончите строки, перехода от символов слова не пунктуация) одинарной кавычкой.

2
ответ дан PhiLho 7 November 2019 в 19:05
поделиться
string list = "Fred,Sam,Mike,Sarah";

string[] splitList = list.Split(',');

for (int i = 0; i < splitList.Length; i++)
    splitList[i] = String.Format("'{0}'", splitList[i]);

string newList = String.Join(",", splitList);
1
ответ дан RickL 7 November 2019 в 19:05
поделиться

Мой "менее сложный" подход... Я предполагаю, что это всегда - хорошая практика для использования 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
ответ дан bruno conde 7 November 2019 в 19:05
поделиться
string[] splitList = list.Split(',');
string newList = "'" + string.Join("','", splitList) + "'";
16
ответ дан Tor Haugen 7 November 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: