2012-03-31 1 views
3

J'ai une adresse IP comme celle-ci "127.000.000.001" comment puis-je supprimer les zéros de tête pour obtenir ce "127.0.0.1"? Pour l'instant j'utilise regex comme celui-ciSupprimer les zéros à partir de l'adresse IP avec C#

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

est-il un autre moyen d'atteindre ce résultat sans utiliser regex?

J'utilise Visual C# 3.0 pour ce code

Répondre

8

Oui, il y a une bien meilleure façon que d'utiliser des expressions régulières pour cela.

Essayez plutôt le System.Net.IpAddress class.

Il existe un ToString() method qui renvoie une version lisible par l'utilisateur de l'adresse IP dans sa notation standard. C'est probablement ce que vous voulez ici.

+0

merci pour le très rapide respose .. :) –

+3

Je suis préoccupé par la réponse de Brent. J'ai le problème avec IPAddress.Parse. les zéros en tête interprètent Octal. alors comment ToString va vous aider puisqu'il a besoin d'une adresse IP en premier et que pour en faire une d'une chaîne, vous devez d'abord analyser. Malheureusement, c'est là que cette réponse échoue. –

+0

Ce sera faux dans le cas IP = 172.016.000.000. Après avoir appelé IPAddress.Parse (IP), le résultat sera 172.14.0.0. C'est incorrect. Nous devrions supprimer le 0 principal de l'adresse IP. –

0

Comme indiqué par @Brent, IPAddress.TryParse traite des zéros, octal et entraînera une mauvaise réponse. Une façon de résoudre ce problème consiste à utiliser un RegEx.Replace pour effectuer le remplacement. Personnellement, j'aime celui-ci qui cherche un 0 suivi d'une quantité de chiffres.

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

Il renverra 10.1.100.1. Cela ne fonctionnera que si le texte entier est une adresse IP.

+0

Il résout complètement mon problème. –

+0

"Existe-t-il un autre moyen d'obtenir ce résultat sans utiliser regex?" Vous n'avez fait aucune tentative pour résoudre le problème du demandeur. En fait, vous avez répondu à la façon dont ils résolvent actuellement le problème. Ils ont demandé une alternative. –

Questions connexes