Skip to content

Instantly share code, notes, and snippets.

@krzyzanowskim
Created September 8, 2021 19:05
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krzyzanowskim/3fca98a926b8943f646a8dfdc2625aae to your computer and use it in GitHub Desktop.
Save krzyzanowskim/3fca98a926b8943f646a8dfdc2625aae to your computer and use it in GitHub Desktop.
import Foundation
let formatter = PersonNameComponentsFormatter()
formatter.style = .long
do {
let components = formatter.personNameComponents(from: "Marcin Krzyżanowski")!
print(components.givenName!) // Marcin
print(components.familyName!) // Krzyżanowski
}
do {
let components = formatter.personNameComponents(from: "Krzyżanowski Marcin")!
print(components.givenName!) // Marcin
print(components.familyName!) // Krzyżanowski
}
do {
var components = PersonNameComponents()
components.givenName = "Marcin"
components.middleName = "the Great"
components.familyName = "Krzyżanowski"
let name = formatter.string(from: components)
print(name) // Marcin the Great Krzyżanowski
}
@haikusw
Copy link

haikusw commented Sep 9, 2021

Interesting what it gets right and what it doesn't.

do {
	let components = formatter.personNameComponents(from: "Jones Smith")!
	print(components.givenName!)
	print(components.familyName!)
}

do {
	let components = formatter.personNameComponents(from: "Smith Jones")!
	print(components.givenName!)
	print(components.familyName!)
}

//Jones
//Smith
//Smith
//Jones


do {
	let components = formatter.personNameComponents(from: "Joe Smith")!
	print(components.givenName!)
	print(components.familyName!)
}

do {
	let components = formatter.personNameComponents(from: "Smith Joe")!
	print(components.givenName!)
	print(components.familyName!)
}

//Joe
//Smith
//Joe
//Smith

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment