programing

스위프트에서 문자열에서 분음 부호를 제거하는 방법은?

telecom 2023. 10. 2. 10:58
반응형

스위프트에서 문자열에서 분음 부호를 제거하는 방법은?

a에서 발음 구별(또는 억양)을 제거하는 방법String스위프트에서 "에엔"을 "에엔"으로 바꾸는 것처럼?다시 돌아가야 합니까?NSString아니면 스위프트 내에서 할 수 있습니까?

스위프트에서 직접 작동할 수 있습니다.String("Foundation"을 가져오는 경우):

let foo = "één"
let bar = foo.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
print(bar) // een

스위프트 3:

let foo = "één"
let bar = foo.folding(options: .diacriticInsensitive, locale: .current)
print(bar) // een

@MartinR 답변 업데이트... 정렬/검색을 위한 문자열을 제공하는 Swift 3 확장자로 누군가에게 유용할 수 있습니다.

extension String {
    var forSorting: String {
        let simple = folding(options: [.diacriticInsensitive, .widthInsensitive, .caseInsensitive], locale: nil)
        let nonAlphaNumeric = CharacterSet.alphanumerics.inverted
        return simple.components(separatedBy: nonAlphaNumeric).joined(separator: "")
    }
}

예.

print("Mÿ nâMe ís jÄço´B".forSorting) // "mynameisjacob"

이것이 내 해결책입니다

스위프트 5

    extension String {

        func unaccent() -> String {

            return self.folding(options: .diacriticInsensitive, locale: .current)

        }

    }

이것은 또한 a를 적용하여 수행할 수 있습니다.StringTransform:

let foo = "één"
let bar = foo.applyingTransform(.stripDiacritics, reverse: false)!
print(bar) // een

또는 사용자 지정 속성을 구현하여StringProtocol

extension StringProtocol {
    var stripingDiacritics: String {
        applyingTransform(.stripDiacritics, reverse: false)!
    }
}

let bar = foo.stripingDiacritics
print(bar) // een

에 대한 답변 업데이트Swift 5.0.1

func toNoSmartQuotes() -> String {
    let userInput: String = self
    return userInput.folding(options: .diacriticInsensitive, locale: .current)
}

사용합니다.someTextField.text.toNoSmartQuotes()

언급URL : https://stackoverflow.com/questions/29521951/how-to-remove-diacritics-from-a-string-in-swift

반응형