まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

文字列の検索と削除

次は文字列の検索と削除です。
先頭から○文字まで削除などはありますが、入力された文字列から特定の文字列を削除するというサンプルは見当たらなかったので投下しました。
サンプルはこちらです。英語と書かれていますが、日本語もおkです。
GitHub - prince9/TextAddEnglish: An addition and deletion of a specific character string are performed in the inputted text, and it displays on a label. 入力されたテキストに特定の文字列の追加と削除を行い、ラベルに表示します。文字列が英語になっていますが、日本語もおk

特定の文字列の削除はこのような感じ。

NSString *文字列3 = [文字列1(←入力された文字列) stringByReplacingOccurrencesOfString:文字列2(←削除する文字列) withString:@""(←消す)];

具体的には、

NSString *str3 = [str1 stringByReplacingOccurrencesOfString:str2 withString:@""];

となります。

TextFieldに入力された文字列を検索して「not」があった場合は「not」を削除してラベルに表示。「not」がなかった場合は先頭に「No_」という文字列を追加しています。
かつ特定の範囲内のランダムな位置に画像を表示しています。
以下、追加するコードです。新規プロジェクトを作ったときに書かれているコードは一部省略しています。

・ViewController.h

@interface ViewController : UIViewController {
    int x,y;
}
//テキスト入力
@property (weak, nonatomic) IBOutlet UITextField *myField;
//入力したテキストをそのまま表示 
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
//文字列を検索して特定の文字列があるかどうか判定、あるかないかを表示
@property (weak, nonatomic) IBOutlet UILabel *Judg;

@property (weak, nonatomic) IBOutlet UIImageView *myimage;

@property (weak, nonatomic) IBOutlet UIImageView *myimage2;
//特定の文字列を入力された文字列に加えたり削除したものを表示
@property (weak, nonatomic) IBOutlet UILabel *Add;


- (IBAction)textInput:(id)sender;
//文字列検索判定+文字追加開始ボタン
- (IBAction)JudgBtn:(id)sender;

・ViewController.m

...
- (IBAction)textInput:(id)sender {
    myLabel.text = myField.text;
}

- (IBAction)JudgBtn:(id)sender {
 
    /* 
TextFieldに入力した文字列の検索、検索結果はJudg.textに出力
     ・「app」があれば黒いちょうちょをxは20-150、yは120-320の範囲のランダムな位置に表示して、白いちょうちょを消します
     ・「store」があれば白いちょうちょをxは20-150、yは120-320の範囲のランダムな位置に表示して、黒いちょうちょを消します
     ・該当する文字列がないときは黒いちょうちょ・白いちょうちょともに消します
     */
    
    //文字列検索の準備
    //NSRange 変数 = [NSString* rangeOfString:NSString*];
    
    NSRange searchResult = [myField.text rangeOfString:@"app"];
    NSRange searchResult2 = [myField.text rangeOfString:@"store"];
    
        //入力した文字列に「app」があった場合の処理
    if (searchResult.location != NSNotFound) {
        Judg.text = @"Yes";
        myimage.image = [UIImage imageNamed:@"fly1omin.png"];
        
        //Xは20-150、yは120-320の範囲でランダムな数を出力、それを画像の表示位置に
        x = arc4random() % 131 + 20;
        y = arc4random() % 201 + 120;
        myimage.center = CGPointMake(x, y);
        myimage2.image = nil;

    }
    
    //入力した文字列に「store」があった場合の処理
    else if (searchResult2.location != NSNotFound) {
        Judg.text = @"Yes";
        myimage2.image = [UIImage imageNamed:@"fly4mino.png"];
        
        //Xは20-150、yは120-320の範囲でランダムな数を出力、それを画像の表示位置に
        x = arc4random() % 131 + 20;
        y = arc4random() % 201 + 120;
        myimage2.center = CGPointMake(x, y);
        myimage.image = nil;
        
    }
    //入力した文字列に「app」も「store」もなかった場合の処理
        else{
        Judg.text = @"None";
        //画像を消す 
        myimage.image = nil;
        myimage2.image = nil;
    }

    //入力した文字に「not」があった場合は「not」を削除。一応英語にしてますが、日本語でもおk。その場合は「not」を日本語にしてください
    NSRange searchResult3 = [myField.text rangeOfString:@"not"];
    
    if (searchResult3.location != NSNotFound) {
        NSString *str1 = myField.text;
        NSString *str2 = @"not";
        
        //文字列の削除、Deletion of a character string.
        //NSString *文字列3 = [文字列1(←入力された文字列) stringByReplacingOccurrencesOfString:文字列2(←削除する文字列) withString:@""(←消す)];
        //例:入力された文字列が「I do not play tennis. 」、削除する文字列が「not」の場合、以下だと「I do play tennis.」になる
        NSString *str3 = [str1 stringByReplacingOccurrencesOfString:str2 withString:@""];
        Add.text = [NSString stringWithFormat:@"%@",str3];
       
    }
    
    //「not」がなかった場合は入力した文字の先頭に「No_(←半角スペース)」を付け足した文字列をラベルで表示
    else {
        NSString *str4 = @"No ";
        NSString *str5 = myField.text;
        NSString *str6 = [str4 stringByAppendingString:str5];
        Add.text = [NSString stringWithFormat:@"%@",str6];
    }
    }