Swift如何判断字符串的语言

Swift如何判断字符串的语言,第1张

概述有时我们需要判断一段文字是属于那种语言:英文?韩文?还是中文?虽说这也算某种程度的猜测,但至少比你自己瞎猜要准确地多! ;) 这里提供三种方法. 首先如果你只在MacOS上运行的话,你可以用AppKit中的NSSpellChecker类: import AppKitlet checker = NSSpellChecker.shared()checker.automaticallyIdenti

有时我们需要判断一段文字是属于那种语言:英文?韩文?还是中文?虽说这也算某种程度的猜测,但至少比你自己瞎猜要准确地多! ;)

这里提供三种方法.

首先如果你只在MacOS上运行的话,你可以用AppKit中的NsspellChecker类:

import AppKitlet checker = NsspellChecker.shared()checker.automaticallyIDentifIEsLanguages = truelet str = "猫猪侯佩,弄啥呢!!!"checker.requestChecking(of: str,range: NSRange(location: 0,length: str.characters.count),types: NSTextCheckingResult.CheckingType.orthography.rawValue,options: nil,inSpelldocumentWithTag: 0){num,results,orthography,count in    print("\(orthography.dominantLanguage)")}

最终打印的是:zh-Hans

如果你要在iOS上实现这个功能,那么在UIKit中也有一个对应的类UITextChecker,不过遗憾的是该类貌似只能事先指定语言,而不可以侦测语言.而且该类的强项是对单词做拼写检查,你可以列出其所有支持的语言:

UITextChecker.availableLanguages

返回结果是:

["en_US","en_CA","pt_BR","it_IT","ko_KR","nb_NO","de_DE","en_GB","sv_SE","en_AU","en_SG","es_MX","pt_PT","en_IN","fr_FR","es_ES","nl_NL","tr_TR","fi_FI","pl_PL","ru_RU","da_DK"]

So,如果你的目标是iOS,那么你可以使用下面两种方法.

第一种是比较底层的方法,但代码比较简洁,大多数代码用在底层类到高层类的转换上:

func testLangWith(string:String)->String?{    if string.characters.count < 100{ return CFStringTokenizercopyBestStringLanguage(string as CFString!,CFRange(location: 0,length: string.characters.count)) as String?    }else{ return CFStringTokenizercopyBestStringLanguage(string as CFString!,length: 100)) as String?    }}

第二种是使用NSlinguisticTagger这个类,代码如下:

func testLangWith(string:String)->String?{    let Tagschemes = [NSlinguisticTagschemeLanguage]    let tagger = NSlinguisticTagger(Tagschemes: Tagschemes,options: 0)    tagger.string = string    let lang = tagger.tag(at: 0,scheme: NSlinguisticTagschemeLanguage,tokenRange: nil,sentenceRange: nil)    return lang}

下面测试一段韩文:

let str = "외모만을 따지지 마세요. 그것은 당신을 현혹시킬 수 있습니다. 재산에 연연하지 마세요. 그것들은 사라지기 마련입니다. 당신에게 미소를 짓게 할수 있는 사람을 선택하세요. 미소만이 우울한 날을 밝은 날처럼 만들 수 있습니다."let lang = testLangWith(string: str)

最终lang值为:”ko”

PS:上面那一段韩文的意思是:

不要只看外貌,它会迷惑你。不要贪恋财产,它们终究是会消失的。请选择能够对你微笑的人吧,微笑能使忧郁的日子变得明朗。

:)

总结

以上是内存溢出为你收集整理的Swift如何判断字符串的语言全部内容,希望文章能够帮你解决Swift如何判断字符串的语言所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存