Mam kilka ludzkich imion. Wszystkie są nazwami "zachodnimi" i potrzebuję tylko amerykańskich konwencji/skrótów (np. Pan zamiast Sr. dla señor). Niestety, ludzie, do których przesyłam rzeczy, nie wpisywali swoich nazwisk, więc nie mogę ich zapytać, jak chcieliby się nazywać. Znam płeć każdej osoby i jej pełne imię, ale tak naprawdę nie piszę tego dokładniej.Human Name parsing
Kilka przykładów:
- John Smith
- John Smith, Jr.
- John Smith Jr.
- John Smith XIV
- dr John Smith, Ph.D.
Chciałbym, aby móc analizować z części każdej nazwy:
name = Name.new("John Smith Jr.")
name.first_name # <= John
name.greeting # <= Mr. Smith
Jeśli szukam „pozdrowienie” (prawdopodobnie nie najlepsze określenie), co chcę tu jest , dla 1-4, "Pan Smith". Dla 5, chciałbym doktora Smitha, ale zadowoliłbym się panem Smithem.
Klejnot Ruby do tego byłby idealny. Zainspirowałem się, by poprosić o coś tak dziwnego dla Chronicznego, klejnotu Rubinowego, który zajmuje się czasem w zadziwiająco ludzki sposób, pozwalając mi poprawnie powiedzieć "ostatni wtorek" i wymyślić coś sensownego. "Wystarczyłby algorytm, który uderzy najbardziej przypadków narożnych.
Próbuję sobie z niektórych zagadnień przedstawionych w falsehoods programmers believe about names
Daje mi to naprawdę dobry punkt wyjścia do napisania własnej biblioteki do DWIW. Odpowiedź została zaakceptowana. – Hut8