美文网首页
NSString、NSMutableString

NSString、NSMutableString

作者: 我不白先生 | 来源:发表于2020-09-24 09:58 被阅读0次

NSString

2.1是一个常量字符串类
2.2创建方法
2.3截取方法
2.4拼接方法
2.5替换方法
2.6判断两个字符串相等的方法

#import "ViewController.h"
#import "TRExample.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *outputLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //创建方法
    NSString *str1 = [[NSString alloc]init];//空字符串,一般用的少,一般用于往里拼接字符
    NSString *str2 = @"Hello world!";//将一个字符串对象直接赋值给指针str2
    NSString *str3 = @"Hello world!";//如果两个字符串完全相同,@不会创建两个相同的常量对象。所以,str2和str3是同一个对象
    self.outputLabel.text = [NSString stringWithFormat:@"%p\n%p",str2,str3];
    NSString *str4 = [NSString stringWithFormat:@"%@ world!",@"Hello"];//格式化创建
    NSString *str5 = [NSString stringWithFormat:@"%@ world!",@"Hello"];
    self.outputLabel.text = [NSString stringWithFormat:@"%p\n%p",str4,str5];
    
    TRExample *e = [[TRExample alloc]init];
    self.outputLabel.text = [NSString stringWithFormat:@"%p\n%p\n%p",str2,str4,e];
    
    //截取方法
    NSString *str6 = @"www.tedu.cn";
    NSString *str7 = [str6 substringToIndex:3];//截取头,截取好多个参数就写几
    self.outputLabel.text = str7;
    NSString *str8 = [str6 substringFromIndex:9];//截取尾,从哪开始截就写下标几
    self.outputLabel.text = str8;
    NSString *str9 = [str6 substringWithRange:NSMakeRange(4, 4)];//截取中段;第一个参数表示从哪开始截就写下标几,第二个参数表示连着截几个参数得到的结果为tedu
    
    //拼接方法
    NSString *str10 = @"Hello";
    NSString *str11 = @"world!";
    NSString *str12 = [NSString stringWithFormat:@"%@%@",str10,str11];//工厂方法
    self.outputLabel.text = str12;
    NSString *str13 =[[NSString alloc]initWithFormat:@"%@%@",str10,str11];//初始化
    self.outputLabel.text = str13;
    NSString *str14 = [str10 stringByAppendingString:str11];//追加
    self.outputLabel.text = str14;//格式化拼接
    NSString *str15 = [str10 stringByAppendingFormat:@"%@",str11];
    self.outputLabel.text = str15;
    
    //替换方法
    NSString *str16 = @"www.tarena.com.cn";
    NSString *str17 = [str16 stringByReplacingCharactersInRange:NSMakeRange(4, 10) withString:@"tedu"];//第一个参数表示要哪个下标(从0开始算)开始,第二个参数表示需要替换的位数;第三个参数写需要替换成的
    self.outputLabel.text = str17;
    
    //判断两个字符串相等的方法
    NSString *str18 = @"123Abc#!";
    if([str18 isEqualToString:@"123Abc#!"])
    {
        self.outputLabel.text = @"密码正确";
    }    

NSMutableString

3.1是可变字符串,是NSString的子类
3.2创建方法
3.3添加方法
3.4求字符串长度
3.5删除方法
3.6确定子串在整个字符串的范围
3.7替换方法(修改方法)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //创建方法
    NSMutableString *str1 = [[NSMutableString alloc]init];//空字符串
    NSMutableString *str2 = [NSMutableString stringWithCapacity:100];//预估值
    NSMutableString *str3 = @"abc";//str3会退化成不可变字符串
    NSMutableString *str4 = [NSMutableString stringWithString:@"string"];
    self.outputLabel.text = str4;
    NSMutableString *str5 = [NSMutableString stringWithFormat:@"age:%d",10];
    
    //添加方法
    [str2 appendString:@"string"];//末尾添加
    [str2 appendString:@"这个单词有6个字符"];
    self.outputLabel.text = str2;
    NSMutableString *str6 = [NSMutableString stringWithString:@"cjddf"];
    [str6 appendFormat:@"这个单词有%lu个字符",(unsigned long)str6.length];//str6.length表示str6里有多个字符即字符长度;这串代码叫格式化末尾添加
    self.outputLabel.text = str6;
    
    //删除方法
    NSMutableString *str7 = [NSMutableString stringWithString:@"I am learning Objective-C language"];
    //[str7 deleteCharactersInRange:NSMakeRange(14, 10)];
//    [str7 deleteCharactersInRange:(NSRange)];//按住cmd键然后点击鼠标左键追踪
    [str7 deleteCharactersInRange:[str7 rangeOfString:@"Objective-"]];
    self.outputLabel.text = str7;
    
    //替换方法(修改方法)
    NSMutableString *str8 = [NSMutableString stringWithString:@"This is a string"];
    [str8 replaceCharactersInRange:[str8 rangeOfString:@"a"] withString:@"another"];
    self.outputLabel.text = str8;   
}
每日一练.png

练习一身份证号码截取

ViewController.h

@interface ViewController : UIViewController<UITextFieldDelegate>//UITextFieldDelegate委托协议的意思
@end

ViewController.m

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *inputTextField;
@property (weak, nonatomic) IBOutlet UILabel *outputYearLabel;
@property (weak, nonatomic) IBOutlet UILabel *outputMonthLabel;
@property (weak, nonatomic) IBOutlet UILabel *outputDayLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.inputTextField.delegate = self;//委托的哪个类要那个类传送过去
}
- (IBAction)transfer:(UIButton *)sender {
    NSString *ID = self.inputTextField.text;
    if(ID.length != 18)
    {
        self.inputTextField.text = @"";
    }
    NSString *year = [ID substringWithRange:NSMakeRange(6, 4)];
    NSString *month = [ID substringWithRange:NSMakeRange(10, 2)];
    NSString *day = [ID substringWithRange:NSMakeRange(12, 2)];
    self.outputYearLabel.text = year;
    self.outputMonthLabel.text = month;
    self.outputDayLabel.text = day;
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    static int count = 0;
    char ch = [string characterAtIndex:0];
    if(ch >= '0' && ch <= '9' && ++count <=18)
    {
        return YES;
    }
    if( ch == 'X' && ++count == 18 )
    {
        return YES;
    }
    if(ch == 'x')
    {
        count--;
    }
    return NO;      
}
@end

屏幕显示


结果.png

练习二
模拟登陆程序,判断用户名与密码是否正确
ViewController.m

#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *inputNameTextField;
@property (weak, nonatomic) IBOutlet UITextField *inputPassWordTextField;
@property (weak, nonatomic) IBOutlet UILabel *outputLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)login:(UIButton *)sender {
    NSString *name = self.inputNameTextField.text;
    NSString *password = self.inputPassWordTextField.text;
    if([name isEqualToString:@"zhangsan"]&&[password isEqualToString:@"123Abc#!"])
    {
        self.outputLabel.text = @"登陆成功";
    }
    else
    {
        self.outputLabel.text = @"用户名或密码错误";
    }   
}
@end
结果2.png

相关文章

网友评论

      本文标题:NSString、NSMutableString

      本文链接:https://www.haomeiwen.com/subject/bfloyktx.html