Regex extraire des initiales de Nom
eg. if the Name is: John Deer
the Initials should be: JD
Je peux utiliser des sous-chaînes pour effectuer cette vérification sur le champ Initiales, mais vous vous demandez si je peux écrire une expression régulière? Et l'écriture est une expression régulière une meilleure idée que de le faire à l'aide de cordes méthodes?
OriginalL'auteur dotNetNewbie | 2012-05-30
Vous devez vous connecter pour publier un commentaire.
Personnellement, je préfère cette expression
Qui prend soin de ses initiales, et les espaces en retrait (c'est le ' ?' à la fin).
La seule chose que vous avez à vous soucier des titres et puctuation comme Jr ou Père, ou Mme....etc etc. Certaines personnes ne comprennent ceux qui sont dans leurs noms, prénoms
Vous devez modifier le "set" je ne disposés à travailler avec le standard de 52 caractère Américain alphabet anglais.
Pour les initiales avec des périodes de Michael J. Jordan, vous pouvez mettre à jour l'expression d'inclure un "\.". Quelque chose comme ceci "(\b[a-zA-Z]) ([a-zA-Z]*\.* ?"
OriginalL'auteur Nevyn
Voici ma solution. Mon but n'était pas de fournir la solution la plus simple, mais qui peut prendre une variété de (parfois bizarre) nom de formats, et de générer la meilleure estimation, à un nom et prénom initiale (ou, dans le cas de mononymous personnes), une seule initiale.
J'ai aussi essayé de l'écrire dans une manière qui est relativement international-friendly, avec unicode regexes, bien que je n'ai pas d'expérience dans la génération des initiales pour de nombreux types de noms étrangers (Chinois par exemple), mais il faudrait au moins générer quelque chose d'utilisable pour représenter la personne, en vertu de deux personnages. Par exemple, alimenter un nom en coréen comme "행운의 복숭아" donnera 행복 comme vous avez pu penser (même si c'est peut-être pas la bonne façon de le faire dans la culture coréenne).
OriginalL'auteur Mason G. Zhwiti
Comment à ce sujet?
Ne fonctionne que si le nom est en majuscule...
OriginalL'auteur IanNorton
C'est mon approche:
Traité les affaires:
Pas traité les affaires:
OriginalL'auteur Olli
Voici une autre avec un accent sur la simplicité:
Il y a une question de savoir quoi faire si le fourni les noms ne sont pas comme prévu. Personnellement, je pense qu'il devrait renvoyer uniquement le premier caractère de chaque morceau de texte qui n'est pas un espace. E. g:
Il y aura ceux qui dirais pour les plus sophistiquées/techniques complexes (par exemple, pour gérer le dernier de mieux en mieux) mais IMO c'est vraiment un nettoyage des données du problème.
OriginalL'auteur Steve Chambers
essayer celui-ci
ou cette un
http://www.kewney.com/posts/software-development/using-regular-expressions-to-get-initials-from-a-string-in-c-sharp
OriginalL'auteur COLD TOLD
Oui, l'utilisation d'une expression régulière. Vous pouvez utiliser les Regex.Match et de la Regex.Match.Les groupes de méthodes pour trouver des correspondances et puis d'extraire les valeurs correspondantes que vous avez besoin - les initiales dans ce cas. La recherche et l'extraction des valeurs qui va arriver en même temps.
OriginalL'auteur RobertMS
Comment à ce sujet:
Cela permet en option prénoms, et travaille pour plusieurs capitalisations, comme indiqué ci-dessus.
OriginalL'auteur kevlar1818
[a-z]+[a-z]+\b
qui vous net Les deux premières lettres de chaque nom...where name = 'Greg Henry' = 'G H" ou "James Smith' 'J S'
Puis vous pouvez fractionner sur "" et joindre sur "
Ceci fonctionne même sur des noms comme
'James Henry George Michael' = 'J H G M'
'James Henry George Michael III de la deuxième' = 'J H G M III'
Si vous voulez éviter la scission utiliser
[a-z]+[a-z]+\b ?
Mais alors des noms comme
Jon Michael Jr. The 3rd
sera =JMJr.T3
où que l'option ci-dessus vous permet d'obtenir 'La', 'le' et '3ème' si vous voulais ..Si tu voulais vraiment être de fantaisie, vous pouvez utiliser les
(\b[a-zA-Z])[a-zA-Z]* ?
pour les parties du nom et de la remplacer par l'ancienne.OriginalL'auteur Jay