Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
От MSDN:
Replace(String, String, Int32)
В указанной входной строке, заменяет указанное максимальное количество строк, которые соответствуют образцу регулярного выражения указанной замещающей строке.
Не это, что Вы хотите?
Только ответить на исходный вопрос... Следующий regex соответствует только первой инстанции нечто слова:
(?<!foo.*)foo
Этот regex использует отрицательный lookbehind (? <!) не гарантировать экземпляр нечто найдено до того, являющегося согласованным.
В этом случае вы не можете использовать:
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 , представляет количество случаев, когда замена должна произойти.