OC字符串和数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC字符串和数值相关的知识,希望对你有一定的参考价值。
1??.NSString
C语言中, 字符串是由char(ASCII码)字符组成,每个字符占一个字节
OC中,字符串是由unichar(Unicode)字符组成,每个字符占两个字节
NSString: 不可变字符串,即:创建以后,内容和长度不能更改
NSMutableString: 可变字符串,即:创建以后,内容还可以修改
1. > 字符串的创建
> 开辟空间,初始化
NSString *string = [[NSString alloc] initWithFormat:@"I Love ios"];
>便利构造器
NSString *string = [NSString stringWithFormat:@"I Love iOS"];
>字面量——笑笑语法,语法糖
NSString *string = @"I Love iOS";
获取字符串长度:
NSLog(@"%d",string.length);
获取字符串中字符串
- (unichar)characterAtIndex:(NSUInteger)indes;
判断两个字符串是否相等
[string isEqualToString:string1];(返回值为BOOL类型)
字符串的比较
- (NSComparisonResult)compare:(NSString *)string;
获取子字符串
- (NSString *)substringFromIndex:(NSUInteger)from;
- (NSString *)substringToIndex:(NSUInteger)to;
拼接字符串
- (NSString *)stringByAppendingFormat:(NSString *)format, ...;
替换字符串
- (NSString *)stringByReplacingCharactersInrange:(NSRange)range withString:(NSString *)replacement;
字符串转化为int类型
@property (readonly) int intValue;
字符串全部大写
@property (readonly, copy) NSString *uppercaseString;
字符串全部小写
@property (readonly, copy) NSString *lowercaseString;
字符串以空格号隔开的每个字符串的首字母大写
@property (readonly, copy) NSString*capitalizedString;
是否以指定字符串为前缀
- (BOOL)hasPrefix:(NSString *)str;
比如:
NSString *string = [NSString stringWithFormat:@"hello.png"];
BOOL isTure = [string hasPrefix:@"hello"];
if (1 == isTure) {
NSLog(@"string是以hello开头的");
} else {
NSLog(@"string不是以hello开头的");
}
是否以指定字符串为后缀
- (BOOL)hasSuffix:(NSString *)str;
2??. >可变字符串NSMutableString
NSMutableString创建的字符串是一个动态的可变的字符串,可以对原字符串对象进行增、删、改等操作.
不可变字符串——本身不能被修改
对不可变字符串的修改操作,操作的是原字符串的 副本, 得到的是一个新的字符串
可变字符串——本身能被修改
可变字符串修改的是原字符串,因此可变字符串的操作方法没有返回值!!
初始化方法
- (NSMutableString *)initWithCapacity:(NSUInteger)capacity
便利构造器
+ (NSMutableString *)stringWithCapacity:(NSUInteger)capacity;
Capacity——参数值为预估的空间大小,但是会根据实际的存储情况,动态的调整 实际的空间大小
可变字符串也有自己的拼接字符串方法
- (void)appendFormat:(NSString *)format, ...;
注意:NSMutableString可以自身完成字符串的增删改,但是如果调用父类NSString特有的某些方法,可能会有些错误比如
NSMutableString *mStr = [NSMutableString stringWithFormat:@"hello world"];
[mStr stringByAppendingFormat:@"你好"];
NSLog(@"%@", mStr);
这样的输出结果任然是hello world
插入字符串
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
删除字符串
- (void)deleteCharactersInrange:(NSRange)range;
替换字符串
- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;
重置字符串
- (void)setString:(NSString *)aString;
//2?? 1.> 将整数123,存储为NSNumber类型的对象。
int b = 123;
NSNumber *number1 = [NSNumber numberWithInt:b];
NSLog(@"number1 = %@", number1);
int b1 = [number1 intValue];
NSLog(@"结果 = %d", b1);
//2.> 将3.14159,存储为NSNumber类型的对象。
float c = 3.14159;
NSNumber *number2 = [NSNumber numberWithFloat:c];
NSLog(@"number2 = %@", number2);
float c1 = [number2 floatValue];
NSLog(@"结果 = %f", c1);
//3.> 将‘c‘,存储为NSNumber类型的对象。
char d = ‘c‘;
NSNumber *number3 = [NSNumber numberWithChar:d];
NSLog(@"number3 = %@", number3);
char d1 = [number3 charValue];
NSLog(@"结果 = %c", d1);
//4.> 将YES,存储为NSNumber类型的对象。
BOOL e = YES;
NSNumber *number4 = [NSNumber numberWithBool:e];
NSLog(@"number4 = %@", number4);
BOOL e1 = [number4 boolValue];
NSLog(@"结果 = %d", e1);
//3?? 1.> 定义Student结构体,包含姓名,性别,年龄,分数,学号;定义该结构体的变量,并存储为NSValue类型的对象。
typedef struct student{
char name[20];//姓名
char gender;//性别
int age;//年龄
int score;//分数
int number;//学号
}Student;
Student stu = {"xiaoMing", ‘m‘, 18, 88, 6};
NSValue *Stu = [NSValue valueWithBytes:&stu objCType:@encode(Student)];
NSLog(@"Stu = %@", Stu);
//OC的MRC环境下才能这样结构体
// typedef struct student {
// NSString *name;//姓名
// NSString *gender;//性别
// NSInteger age;//年龄
// NSInteger score;//分数
// NSInteger number;//学号
// }Student;
// Student student1 = {@"小明", @"男", 18, 88, 6};
// //类方法
// NSValue *stu =[NSValue value:&student1 withObjCType:@encode(Student)];
//
// //对象方法
// NSValue *stu1 = [[NSValue alloc] initWithBytes:&student1 objCType:@encode(Student)];
// NSLog(@"stu = %@", stu);
// NSLog(@"stu1 = %@", stu1);
//2.> 定义NSRange类型的变量,存储为NSValue类型的对象。
NSRange range = NSMakeRange(2, 5);
NSValue *rangeV = [NSValue valueWithRange:range];
NSLog(@"rangeValue = %@", rangeV);
//3.> 将上述NSValue类型的对象,转回为相应的数据类型。
NSRange newRange = [rangeV rangeValue];
NSLog(@"newRange = %@", NSStringFromRange(newRange));
以上是关于OC字符串和数值的主要内容,如果未能解决你的问题,请参考以下文章