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;
}

练习一身份证号码截取
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
屏幕显示

练习二
模拟登陆程序,判断用户名与密码是否正确
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

网友评论