问题
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));
now the s is 'test's','test','test's more'
but I need to replace the inner quotes with 2 single quotes
like this: 'test''s','test','test''s more'
update: I got it to work as below, but I would prefer a cleaner way if possible.
string s = string.Format("`{0}`", string.Join("`,`", test)).Replace("'", "''").Replace("`", "'");
回答1:
This should work:
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("'", "''")));
And if you're really looking to enclose the whole thing in single quotes:
string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''"))));
回答2:
This may be easier than using string.replace
string s = "'" + String.Join("','", test) + "'";
回答3:
Try this:
string s = string.Join(",", test.Select(x => string.Format("'{0}'", x.Replace("'", "''"))));
By the way, there's no apostrophe in "tests" - apostrophes aren't used for plurals.
回答4:
It isn't to everyone's taste, but I like to create helper extensions for these kinds of tasks, and put them into a "utility" namespace:
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));
回答5:
You can always encode quotes before you build your string.
回答6:
I like a version without Replace:
using System.Linq;
(...)
string s = String.Join(", ", from l in MyList select String.Format("'{0}'", l));
来源:https://stackoverflow.com/questions/6934629/join-list-of-string-to-comma-separated-and-enclosed-in-single-quotes