Ne garder que la valeur numérique d'une chaîne de caractères?
J'ai quelques chaînes comme ceci
string phoneNumber = "(914) 395-1430";
Je tiens à dépouiller le parethenses et le tableau de bord, en d'autres mots il suffit de garder les valeurs numériques.
De sorte que la sortie pourrait ressembler à ceci
9143951430
Comment puis-je obtenir le résultat souhaité ?
Même si vous n'êtes pas expérimenté dans les regex, vous devez avoir au moins fait quelques recherches. Le nombre de réponses est inversement proportionnel à la difficulté de le problème.
Il y a toujours quelqu'un comme vous pour se plaindre de questions, c'est un Q&Un site, si je savais que je n'aurais pas demander grâce!
Je ne me plains pas, je suis juste vous laisser savoir qu'il y a déjà ce genre de choses là-bas. Et un de la politique est de rediriger tous les doublons questions à une question principale. Dupliquer les questions sont souvent supprimés comme ça.
Je sais comment faire mais si je ne suis pas sûr que je vais demander, voir j'ai fini à l'aide de la réponse qui ne nécessitent pas de regex. Ce qui était quelque chose que j'ignorais totalement
pourquoi diable est-réponse fermée ? j'arrive ici à partir de google à la recherche de "c# extrait les objets numériques de la chaîne", et ce tout à fait valide et simple et universelle de la fermeture de "hors-sujet" quel sujet ? la programmation de sujet ? je pense que c'est assez bien fichu sur le sujet. ce que le diable SI
Il y a toujours quelqu'un comme vous pour se plaindre de questions, c'est un Q&Un site, si je savais que je n'aurais pas demander grâce!
Je ne me plains pas, je suis juste vous laisser savoir qu'il y a déjà ce genre de choses là-bas. Et un de la politique est de rediriger tous les doublons questions à une question principale. Dupliquer les questions sont souvent supprimés comme ça.
Je sais comment faire mais si je ne suis pas sûr que je vais demander, voir j'ai fini à l'aide de la réponse qui ne nécessitent pas de regex. Ce qui était quelque chose que j'ignorais totalement
pourquoi diable est-réponse fermée ? j'arrive ici à partir de google à la recherche de "c# extrait les objets numériques de la chaîne", et ce tout à fait valide et simple et universelle de la fermeture de "hors-sujet" quel sujet ? la programmation de sujet ? je pense que c'est assez bien fichu sur le sujet. ce que le diable SI
OriginalL'auteur meda | 2013-10-03
Vous devez vous connecter pour publier un commentaire.
Vous effectuez l'une des opérations suivantes:
Utiliser des expressions régulières. Vous pouvez utiliser une expression régulière avec soit
Un caractère négatif de la classe qui définit les caractères qui sont que vous ne voulez pas (ceux des caractères autres que des chiffres décimaux):
Dans ce cas, vous pouvez ne prendre aucune de ces approches:
positif du jeu de caractères qui définit ce que vous voulez (chiffres décimaux):
Dans ce cas, vous pouvez faire quelque chose comme ceci:
Vous n'êtes pas obligé d'utiliser une expression régulière, soit.
Vous pouvez utiliser LINQ directement, depuis une chaîne de caractères est un
IEnumerable<char>
:Si vous êtes seulement à faire avec les alphabets occidentaux, où les seuls chiffres après la virgule que vous verrez ASCII, sauter
char.IsDigit
seront susceptibles de vous acheter un peu de performance:Enfin, vous pouvez simplement effectuer une itération sur la chaîne, jetant les chiffres que vous ne voulez pas, comme ceci:
Ou ceci:
À partir d'un point de vue de la clarté et de la propreté du code, la version 1 est ce que vous voulez. Il est difficile de battre une seule ligne.
Si la performance est importante, ce que je soupçonne, c'est que la version 7, la dernière version, est le gagnant. Il crée un temporaire — une
StringBuilder()
et la transformation sur place au sein de la classe StringBuilder en place de tampon.Les autres options à faire plus de travail.
OriginalL'auteur Nicholas Carey
utilisation reg expression
... @"[^\d]+" ...
( " + " , a ajouté l'expression) afin de recueillir plus de caractères à la fois par remplacement. N'ai pas testé si cela fait une différence de vitesse.OriginalL'auteur COLD TOLD
essayer quelque chose comme cela
OriginalL'auteur BRAHIM Kamel
OriginalL'auteur L.B
Il signifie tout @gleng
@
est important!Grâce à la fois. mais vous souvenez-vous de moi, pourquoi? J'utilisais il y a quelques temps, mais ne pas remmeber pourquoi? Sa raison de dire que c'est du texte :/
Le
@
transforme le texte en texte brut, de sorte que vous n'avez pas besoin de s'échapper de la barre oblique inverse. Sinon, vous aurez une tentative de substitution par le programme et jusqu'à la fin avec une regex deD
seulement.oui quelque chose en souvenir. Merci encore.
OriginalL'auteur Darka
Au lieu d'une expression régulière, vous pouvez utiliser une méthode LINQ:
ou:
OriginalL'auteur Guffa