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

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

文字列の検索と置換

一度はきっと困ってしまう、文字列関係のサンプルを2つアップしました。
まず始めは文字列の検索と置換。TextFieldに入力された文字列をいぢるサンプルはあまり見られなかったので投下しました。

TextFieldに入力された文字列を検索して「あか」があった場合は「あか」を「なはなは」に置き換えてラベルに表示。かつ特定の範囲内のランダムな位置に画像を表示しています。
具体的なコードは以下です。日本語となっていますが、英語もおk。
GitHub - prince9/TextMatchJapanese: 日本語の文字列検索と置換を行い、ラベルに表示します。Sorry,only the Japanese character string is treated.

追加するコードは以下です。新規プロジェクトを作ったときに書かれているコードは一部省略しています。

・ViewController.h

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

- (IBAction)textInput:(id)sender;

//文字列検索判定+置き換え開始ボタン
- (IBAction)hanteiButton:(id)sender;

・ViewController.m

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


- (IBAction)hanteiButton:(id)sender {
    /* TextFieldに入力した文字列の検索、検索結果はhantei.textに出力
     ・「あか」があれば黒いちょうちょをxは20-150、yは120-320の範囲のランダムな位置に表示して、白いちょうちょを消します
     ・「さた」があれば白いちょうちょをxは20-150、yは120-320の範囲のランダムな位置に表示して、黒いちょうちょを消します
     ・該当する文字列がないときは黒いちょうちょ・白いちょうちょともに消します
    */
    
    //文字列検索の準備
    //NSRange 変数 = [《NSString*》 rangeOfString:《NSString*》];
    NSRange searchResult = [myField.text rangeOfString:@"あか"];
    NSRange searchResult2 = [myField.text rangeOfString:@"さた"];
    
    //入力した文字列に「あか」があった場合の処理
    if (searchResult.location != NSNotFound){
        hantei.text = @"あるよ";
        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;

    }
    
    //入力した文字列に「さた」があった場合の処理
    else if (searchResult2.location != NSNotFound) {
        hantei.text = @"あるよ";
        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;

    }

     //入力した文字列に「あか」も「さた」もなかった場合の処理
    else{
        hantei.text = @"ないよ";
        //画像を消す
        myimage.image = nil;
        myimage2.image = nil;
    }
    
    
//「あか」があった場合、「なはなは」と置き換えてラベルに表示 例:「あかいいろ」→「なはなはいいろ」
     NSString *str1 = myField.text;
     NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"あか" withString:@"なはなは"];
     chikan.text = [NSString stringWithFormat:@"%@",str2];
  
}