Будет ли пользователь вводить строки с разделителями в текстовые поля или они будут вводить отдельные строки, которые затем будут встроены в строки с разделителями вашим кодом?
В первом случае может быть лучше переосмыслить ваш интерфейс. Например, пользователь может вводить одну строку за раз в текстовое поле и нажимать кнопку «Добавить в список» после каждого.
Во втором случае не имеет значения, какой разделитель вы используете. Выберите любой персонаж, который вам нравится, просто убедитесь, что вы избегаете любых других вхождений этого персонажа.
EDIT
Поскольку в нескольких комментариях к другим ответам запрашивается код, вот метод для создания строки, разделенной запятыми, с использованием обратной косой черты в качестве escape-символа:
public static string CreateDelimitedString(IEnumerable<string> items)
{
StringBuilder sb = new StringBuilder();
foreach (string item in items)
{
sb.Append(item.Replace("\\", "\\\\").Replace(",", "\\,"));
sb.Append(",");
}
return (sb.Length > 0) ? sb.ToString(0, sb.Length - 1) : string.Empty;
}
А вот метод преобразования этой строки, разделенной запятыми, обратно в набор отдельных строк:
public static IEnumerable<string> GetItemsFromDelimitedString(string s)
{
bool escaped = false;
StringBuilder sb = new StringBuilder();
foreach (char c in s)
{
if ((c == '\\') && !escaped)
{
escaped = true;
}
else if ((c == ',') && !escaped)
{
yield return sb.ToString();
sb.Remove(0, sb.Length);
}
else
{
sb.Append(c);
escaped = false;
}
}
yield return sb.ToString();
}
А вот пример использования:
string[] test =
{
"no commas or backslashes",
"just one, comma",
@"a comma, and a\ backslash",
@"lots, of\ commas,\ and\, backslashes",
@"even\\ more,, commas\\ and,, backslashes"
};
string delimited = CreateDelimitedString(test);
Console.WriteLine(delimited);
foreach (string item in GetItemsFromDelimitedString(delimited))
{
Console.WriteLine(item);
}