2017-05-04 2 views
0

私は、ユーザーが記事を作ることができる社会的なアプリを作成するために、スウィフト3firebaseを使用していますが、事は、私は、ユーザーが呪いの言葉を使用したくないということです。Swift 3でユーザーが呪いを書くのを止める方法はありますか?

のような方法がありますか?ユーザがそれらを書き込むときにを置き換えますか?
は、現在ユーザーが投稿したい事を...書くことテキストビューを使用

どのように私は最も簡単でシンプルな方法のようにそれを行うことができますか?

私は答えを探していましたが、この質問はSwift: how to censor/filter text entered for swear words, etc?です。この回答コードで

import Foundation 

func containsSwearWord(text: String, swearWords: [String]) -> Bool { 
return swearWords 
    .reduce(false) { $0 || text.contains($1.lowercased()) } 
} 

// example usage 
let listOfSwearWords = ["darn", "crap", "newb"] 
    /* list as lower case */ 

let userEnteredText1 = "This darn didelo thread is a no no." 
let userEnteredText2 = "This fine didelo thread is a go." 

print(containsSwearWord(text: userEnteredText1, swearWords: listOfSwearWords)) // true 
print(containsSwearWord(text: userEnteredText2, swearWords: listOfSwearWords)) // false 

しかし、私は本当にそれを取得しないでください。私はどのように私のプロジェクトでそれを実装できますか?どこにコードを貼り付けますか?または、そのコードをテキストビューにリンクするにはどうすればよいですか?そして、そのコード上で欠けているものが、どんなものでなければならないのでしょうか?

答えて

0

.editingChangedイベントでUITextFieldを使用する場合。

inputTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 

func textFieldDidChange(_ textField: UITextField) { 
     print(containsSwearWord(text: textField, swearWords: listOfSwearWords)) // Here you check every text change on input UITextField 
} 

UPDATE

入力がtextViewShouldEndEditing(_ textView: UITextView)検証のユーザー入力で

を終了し、編集を許可する場合はfalse/trueを返す前に、検証UITextViewDelegateOfficial Documentationに)

を実装する必要があります。終わり。

検証入力はtextViewDidEndEditing(_ textView: UITextView)検証のユーザー入力で

を終了し、あなたが許可されていない言葉を見つけた場合は、警告を表示した後。

+0

しかし、私はUITextViewを使用している場合はどうなりますか?私はまだそれを取得していない! ありがとうございます。 – killerwar557

+0

私はUITextViewの使用法のために私の答えを更新しました。 – sergiog90

0

これは私がやる方法です。 NSStringの

    • パスのTextViewのテキストは、NSArrayのは、あなたの呪いの文字列のいずれかが含まれているかどうかをチェックし
    • NSArrayの
    • にNSStringのを変換します。そうであれば****などで置き換えてください。

    これは、オブジェクトCでの表示方法です。

    NSString *textViewStr = myTextView.text; 
    NSArray *myArray1 = [textViewStr componentsSeparatedByString:@" "]; //this will put all words separated by space into an array 
    if ([myArray1 containsObject:@"crap"]) { 
        //found one 
        textViewStr = [textViewStr stringByReplacingOccurrencesOfString:@"crap" 
                withString:@"duck"]; 
    } 
    

    私は別のより良い答えを見つけました。

    //If you want multiple string replacement: 
    NSString *s = @"foo/bar:baz.foo"; 
    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."]; 
    s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 
    NSLog(@"%@", s); // => foobarbazfoo 
    

    String replacement in Objective-C

  • 関連する問題