8
votes

Problème de correspondance de modèle en C #

J'ai une corde comme "AAA 101 B202 C 303" et je veux me débarrasser de l'espace entre le char et le numéro s'il y en a. Donc, après l'opération, la chaîne devrait être comme "AAA101 B202 C303". Mais je ne suis pas sûr que Regex puisse faire cela?

Toute aide? Merci d'avance.


0 commentaires

4 Réponses :


1
votes

Vous pouvez faire quelque chose comme xxx

et remplacer par xxx

L'expression peut être serrée, mais ce qui précède devrait fonctionner pour Votre exemple de chaîne d'entrée.

Ce qu'elle fait est de déclarer un groupe contenant des lettres (premier jeu de paranthèses), puis un espace optionnel (\ S?), puis un groupe de chiffres (\ D +). Les groupes peuvent être utilisés dans le remplacement en faisant référence à leur index. Lorsque vous souhaitez vous débarrasser de l'espace, il suffit de remplacer par 1 $ 2 $.


1 commentaires

Pourquoi rendre l'espace facultatif? Après tout, c'est ce que c'est tout à propos.



8
votes

Oui, vous pouvez le faire avec des expressions régulières. Voici un exemple court mais complet: xxx

(si vous voulez le faire beaucoup, vous voudrez peut-être compiler une expression régulière pour le motif.)

Le \ p {l} correspond à une lettre unicode - Vous voudrez peut-être être plus restrictif.


0 commentaires

0
votes

Bien que pas aussi concis que Regex, le code C # pour quelque chose comme celui-ci est assez simple et très rapide: xxx


0 commentaires