List<string> test = new List<string>();
test.Add("test's");
test.Add("test");
test.Add("test's more");
string s = string.Format("'{0}'", string.Join("','", test));
sは'test's','test','test's more'
しかし、内側の引用符を2つの単一引用符に置き換える必要があります
このような: 'test''s','test','test''s more'
更新:以下のように動作するようになりましたが、可能であればよりクリーンな方法を好むでしょう。
string s = string.Format("`{0}`", string.Join("`,`", test)).Replace("'", "''").Replace("`", "'");
これは動作するはずです:
List<string> test = new List<string>();
test.Add("test's");
test.Add("test");
test.Add("test's more");
string s = string.Join("','", test.Select(i => i.Replace("'", "''")));
そして、あなたが本当に全体を一重引用符で囲むことを探しているなら:
string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''"))));
これは、string.replace
を使用するよりも簡単です
string s = "'" + String.Join("','", test) + "'";
これを試して:
string s = string.Join(",", test.Select(x => string.Format("'{0}'", x.Replace("'", "''"))));
ところで、「テスト」にはアポストロフィはありません-アポストロフィ 複数形には使用されません 。
すべての人の好みではありませんが、これらの種類のタスクのヘルパー拡張機能を作成し、それらを「ユーティリティ」名前空間に入れたいです。
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's more");
string s = string.Format("'{0}'", string.Join("','", test));
文字列を作成する前に、常に引用符をエンコードできます。