обработка специальных символов в текстовых полях и использование разделителей - PullRequest
1 голос
/ 16 января 2020

Что является хорошим вариантом при использовании строк, специальных символов и разделителей?

, например

string name = "test, test";
string result = name + @"test, test";
List<string> list = new List<string>();

Допустим, я хочу, чтобы эта строка разделялась и попадала в список для каждого элемента. в этом случае 'name is item' и 'test, test' это item

, поэтому я могу сделать что-то вроде этого:

String.split(list.ToArray(), ',');

я буду использовать запятую в качестве разделителя, но оба элемента уже содержат их.

результат должен быть:

0 тест, тест
1 тест, тест

но так как разделяет запятую, результат будет

0 тест
1 тест
2 тест
3 тест

, чтобы предотвратить это, я могу что-то вроде

if(name.Contains(","))
{
    name = name.Replace(",","comma");
}

, а затем конвертировать обратно. Но мне не нравится этот код, это своего рода спагетти. Что я могу сделать, так это сделать адаптер для преобразования классов и конвертер и деконвертер 2 методов

, но как проверить эти специальные символы или что вы предложите в такой ситуации, как эта. Потому что у меня есть такие ситуации, но с несколькими специальными символами, такими как, и #. но я не хочу ограничивать текстовое поле.

1 Ответ

1 голос
/ 16 января 2020

Три способа go об этом.

Использование другого разделителя

Не обязательно использовать разделитель , при объединении или разбиении строк. Вот почему некоторые CSV-файлы используют символ ;: чтобы избежать проблемы с запятыми.

String.Replace (), как вы уже сделали

Замените в отдельных строках все символы, которые вы хотите использовать оставайтесь.

Используйте регулярное выражение для разделения

Если вы знаете, что ваши строки имеют такой же шаблон, как \d\stest,\stest, тогда вы можете использовать функцию Regex.Split , которая использует регулярные выражения для разделения строки.

...