SwiftUIでString型のスペルチェックを行う方法をざっくり説明
SwiftUIで開発をしているときに、
「String
型の変数に格納された文字列のスペルをチェックしたい。」
こんな時ってよくありますよね(いや、ない)。
そんな時はUIKitのUITextChecker
を使ってスペルチェックしちゃいましょう。
(備忘録的に自己満足で書いてるのであしからず)
UITextCheckerとは?
UITextChecker
はUIKitで用意されているNSObject
を継承したクラスです。
インスタンスを作成して使います。
どんなコードを書いて使うの?
スペルチェックを行う関数を作りたい時は、
func spellCheck(word: String) -> Bool {
let checker = UITextChecker()
let range = NSRange(location: 0, length: word.utf16.count)
let misspelledRange = checker.rangeOfMisspelledWord(
in: word,
range: range,
startingAt: 0,
wrap: false,
language: "en")
return misspelledRange == NSNotFound
}
引数word
にスペルチェックしたいワードをString
型で渡して、スペルが合っていたらtrue
を返します。
いろいろ説明
NSRange
NSRange
UITextChecker
を使うにはNSRange
という、まあ簡単に言うとスペルチェックをする範囲はどこですか?って質問に答えてあげる必要があります。その答えとしてNSRange
を引数として渡す必要があるわけです。
word.utf16.count
NSRange
を取得するには文字列の長さを渡してあげる必要がありますが、文字列がどの文字コード(utfとかjisとか)を使っているのかで長さが変わるので、utf16
に変換して統一してから文字列word
の長さを渡してあげる必要があるわけです。
rangeOfMisspelledWord
実際にスペルチェックを行うのはこのメソッドです。
UITextChecker
のインスタンスメソッドであるこのメソッドを呼び出すことで、文字列の中の間違っている箇所を表したRange
を返します。もし文字列のスペルが合っていたらNSNotFound
が返されます。
最後に
SwiftUI学習の備忘録として書いています。
もし間違い等ありましたらご指摘お願いいたします。
Author And Source
この問題について(SwiftUIでString型のスペルチェックを行う方法をざっくり説明), 我々は、より多くの情報をここで見つけました https://qiita.com/Toshiki_Ichi/items/0268505e19e7b3bf143a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .