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字符串和数值的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发-OC学习-常用功能代码片段整理

4.字符串和数值

iOS开发-OC语言 oc数据类型

OC -- 小练习

第六十八篇OC_按照某一字段对数值进行排序

Objective-C 之字符串与数值