Подтвердить что ты не робот

Присоединить список строк к запятой, разделенным и заключенным в одинарные кавычки

List<string> test = new List<string>();
test.Add("test's");
test.Add("test");
test.Add("test more");
string s = string.Format("'{0}'", string.Join("','", test));

теперь s равно 'test's','test','test more' но мне нужно заменить внутренние кавычки на две одинарные кавычки

вот так: 'test''s','test','test' more'

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

string s = string.Format("`{0}`", string.Join("`,`", test)).Replace("'", "''").Replace("`", "'");
4b9b3361

Ответ 1

Это должно работать:

List<string> test = new List<string>(); 
test.Add("test's"); 
test.Add("test"); 
test.Add("test more");
string s = string.Join("','", test.Select(i => i.Replace("'", "''")).ToArray());

И если вы действительно хотите вложить все это в одинарные кавычки:

string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''")).ToArray()));

Ответ 2

Это может быть проще, чем использование string.replace

string s = "'" + String.Join("','", test) + "'";

Ответ 4

Это не каждый вкус, но мне нравится создавать вспомогательные расширения для этих задач и помещать их в пространство имен "utility":

public static class ListExtensions
{
   public static void AddDoubleQuoted(this List<string> list, string input)
   {
     input = input.Replace("'", "''");
     list.Add(input);
   }
}

List<string> test = new List<string>();
test.AddDoubleQuoted("test's");
test.AddDoubleQuoted("test");
test.AddDoubleQuoted("test more");
string s = string.Format("'{0}'", string.Join("','", test));

Ответ 5

Вы всегда можете кодировать кавычки, прежде чем строить свою строку.

Ответ 6

Мне нравится версия без Replace:

using System.Linq;
(...)
string s = String.Join(", ", from l in MyList select String.Format("'{0}'", l));