如何从Swift中的String中删除变音符号?

时间:2015-04-08 17:56:57

标签: swift

如何在Swift中删除String中的变音符号(或重音符号)(比如说改变“één”到“een”)?我是否必须回到NSString或者可以在Swift中完成?

4 个答案:

答案 0 :(得分:119)

您可以直接在Swift String上操作(如果"基金会"已导入):

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

答案 1 :(得分:11)

更新@ 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: "")
    }
}

e.g。

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

答案 2 :(得分:0)

回答myfu <- function(a, b){ # check a and b length if (length(a) !=2 & length(b) != 2) return(NA) res <- sqrt((b[2]^2-a[2]^2)-(b[1]^2-a[1]^2)) return(res)}

Swift 5.0.1

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

答案 3 :(得分:0)

这是我的解决方案

快捷键5

    extension String {

        func unaccent() -> String {

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

        }

    }