xpertzgurtej Ответов: 2

Почему регулярное выражение.сплит не разделяет с $


я, используя регулярное выражение.Split разделить мою строку как:

string str = "12$34$45";
string [] result= Regex.Split(str,"$");


но это не расщепление ..Когда я попробовал разделить на#, то это сработало.

Что я уже пробовал:

string str = "12$34$45";
string [] result= Regex.Split(str,"$");

2 Ответов

Рейтинг:
1

Kenneth Haugland

Просто сделай это:

string[] result = Regex.Split(str, "[$]");

Оператор [ ] представляет класс символов, поэтому регулярное выражение пытается сопоставить все, что находится внутри этих скобок.

Для кратного $ (2 в данном случае):
string[] result = Regex.Split(str, "[$]{2}");


Рейтинг:
0

Patrice T

Поскольку " $ " - это особое значение в регулярном выражении, зная, что это регулярное выражение 101.
вам нужно избежать этого как @"\$"

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


xpertzgurtej

с одним $ это работает. но для :
строка str = "12$$34$$45";
строка [] результат= регулярное выражение.Сплит(ул., @"\$$");

это не работает. Как с этим справиться?

На самом деле я хочу разделить свою строку, и разделитель может состоять из нескольких символов.
напр.:
строка str = "12$$34$$45";
строковый разделитель = "$~$";
строка [] результат= регулярное выражение.Сплит(ул., @"\"+ разделитель + "");

Kenneth Haugland

Вам нужно \ перед всеми временами, когда вы собираетесь соответствовать специальному случаю $
строка[] результат = регулярное выражение.Сплит(ул., @"\$\$");

Patrice T

Пробовать @"\$+"

xpertzgurtej

Я нашел решение:
строка str = "12$$34$$45";
строковый разделитель = "$$";

string[] partsFromString = str.Split(new string[] { separator }, StringSplitOptions.None);

Richard MacCutchan

Немного лучший способ был бы
string[] partsFromString = str.Split(new Char[] {'$'}, StringSplitOptions.RemoveEmptyEntries);

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

xpertzgurtej

сепаратор не фиксирован. Поэтому я не могу использовать {'$'}

Richard MacCutchan

Ну, это не проблема. Вы просто вводите символ-разделитель откуда-то еще.