Удалить начальные нули с IP-адреса с помощью C # - PullRequest
3 голосов
/ 31 марта 2012

У меня есть IP-адрес, такой как «127.000.000.001», как я могу удалить ведущие нули, чтобы получить этот «127.0.0.1»?На данный момент я использую регулярное выражение, как это

Regex.Replace("127.000.000.001", "0*([0-9]+)", "${1}")

Есть ли другой способ достичь этого результата без использования регулярного выражения?

Я использую Visual C # 3.0 для этого кода

Ответы [ 3 ]

10 голосов
/ 13 декабря 2012

Объект IP-адреса будет считать начальный ноль восьмеричным, поэтому его не следует использовать для удаления начальных нулей, поскольку он не будет обрабатывать 192.168.090.009.

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/21510004-b719-410e-bbc5-a022c40a8369

8 голосов
/ 31 марта 2012

Да, есть гораздо лучший способ, чем использовать для этого регулярные выражения.

Вместо этого попробуйте System.Net.IpAddress класс .

Существует метод ToString() , который возвращает читаемую человеком версию IP-адреса в его стандартной записи. Это, вероятно, то, что вы хотите здесь.

1 голос
/ 05 января 2016

Как утверждает @Brent, IPAddress.TryParse рассматривает ведущие нули как восьмеричные и приведет к неправильному ответу. Одним из способов решения этой проблемы является использование RegEx.Replace для выполнения замены. Мне лично нравится этот, который ищет 0, сопровождаемый любым количеством чисел.

Regex.Replace("010.001.100.001", "0*([0-9]+)", "${1}")

Вернется 10.1.100.1. Это будет работать, только если весь текст является IP-адресом.

...