Как к Regex ищут/заменяют только первое вхождение в строке в.NET?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

26
задан Shane Fulmer 16 July 2014 в 16:57
поделиться

3 ответа

От MSDN:

Replace(String, String, Int32)   

В указанной входной строке, заменяет указанное максимальное количество строк, которые соответствуют образцу регулярного выражения указанной замещающей строке.

Не это, что Вы хотите?

28
ответ дан bzlm 28 November 2019 в 06:53
поделиться

Только ответить на исходный вопрос... Следующий regex соответствует только первой инстанции нечто слова:

(?<!foo.*)foo

Этот regex использует отрицательный lookbehind (? <!) не гарантировать экземпляр нечто найдено до того, являющегося согласованным.

25
ответ дан 28 November 2019 в 06:53
поделиться

В этом случае вы не можете использовать:

string str ="abc546_$defg";
str = Regex.Replace(str,"[^A-Za-z0-9]", "");

Вместо этого вам нужно объявить новый экземпляр Regex и использовать его следующим образом:

string str ="abc546_$defg";
Regex regx = new Regex("[^A-Za-z0-9]");
str = regx.Replace(str,"",1)

Обратите внимание на 1 , представляет количество случаев, когда замена должна произойти.

0
ответ дан Pini Cheyni 28 November 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: