Regex zu extrahieren Initialen vom Namen
eg. if the Name is: John Deer
the Initials should be: JD
Kann ich die Verwendung von Teilstrings, um diese überprüfung durchzuführen, auf die Initialen Bereich, aber Frage mich, ob ich schreiben kann ein regulärer Ausdruck für Sie? Und ist das schreiben eines regulären Ausdrucks eine bessere Idee, als es zu tun mit strings Methoden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Persönlich, ich bevorzuge diese Regex
Kümmert Initialen und whitespaces entfernen (das ist das ' ?' am Ende).
Die einzige Sache, die Sie kümmern müssen, sind Titel und puctuation wie jun. oder Sen. oder Frau....etc etc. Manche Menschen gehören diejenigen, in deren vollen Namen
Hier ist meine Lösung. Mein Ziel war es nicht die einfachste Lösung, aber eine, können eine Vielzahl von (manchmal seltsamen) Namen, Formate, und generieren Sie die besten raten zu einem ersten und letzten Namen initial (oder im Fall von mononymous Menschen) ein einziges.
Habe ich auch versucht zu schreiben, es in einer Weise, die ist relativ international-freundlich, mit unicode-regexes, obwohl ich habe keine Erfahrung in der Erzeugung von Initialen für viele Arten von ausländischen Namen (z.B. Chinesisch), aber es sollte zumindest etwas erzeugen, nutzbar zur Darstellung der person, der in unter zwei Zeichen. Zum Beispiel, füttern es einen Namen in Koreanisch wie "행운의 복숭아" wird der Ertrag 행복 wie Sie möglicherweise erwartet haben (obwohl vielleicht das ist nicht der Rechte Weg, es zu tun in der koreanischen Kultur).
Dies ist mein Ansatz:
Behandelten Fälle:
Nicht behandelten Fälle:
Wie über dieses?
Hier ist eine alternative, mit einem Schwerpunkt auf halten Sie es einfach:
Gibt es eine Frage, was ist zu tun, wenn die gelieferten Namen sind nicht zu erwarten. Ich persönlich denke, es sollte einfach nur wieder die ersten Zeichen von jedem Stück text, das nicht whitespace-Zeichen. E. g:
Wird es sein, wer würde behaupten für anspruchsvolle/komplexe Techniken (z.B. zu handhaben, die Letzte besser), aber IMO ist das wirklich ein data cleansing Problem.
versuchen, diese
oder diese
http://www.kewney.com/posts/software-development/using-regular-expressions-to-get-initials-from-a-string-in-c-sharp
Wie wäre es damit:
Diese ermöglicht optional Vornamen, und arbeitet für mehrere marktkapitalisierungen, wie oben gezeigt.
[a-z]+[a-z]+\b
die net Sie Die ersten beiden Buchstaben von jedem Namen...where name = 'Greg Henry' = 'G H' oder 'James Smith' 'J S'
Dann können Sie split auf '' und join auf "
Das funktioniert sogar auf Namen wie
'James Henry George Michael' = 'J H G M'
'James Henry George Michael III das zweite' = 'J H G M III'
Wenn Sie möchten, um zu vermeiden, die split nutzen
[a-z]+[a-z]+\b ?
Dann aber Namen wie
Jon Michael Jr. The 3rd
werden =JMJr.T3
wo, wie die obige option können Sie bekommen, 'Der', 'die' und '3.' wenn Sie wollte ..Wenn Sie wirklich wollten, um Lust könnten Sie die
(\b[a-zA-Z])[a-zA-Z]* ?
zu entsprechen, nur die Teile der Namen und ersetzen Sie dann mit dem ehemaligen.Ja, einen regex verwenden. Sie können, benutzen Sie den Regex.Spiel und Regex.Match.Gruppen Methoden zu finden, entspricht, und dann extrahieren Sie die passenden Werte, die Sie brauchen - die Initialen in diesem Fall. Das finden und extrahieren von Werten wird gleichzeitig geschehen.