Objective-C 之字符串与数值

一. NSString类

1. NSString类

可以根据NSString类给的便利构造器创建字符串对象,或者通过指定初始化方法创建对象,也可以通过OC语法糖创建对象.

Eg:

NSString *string1 = [[NSString alloc] initWithFormat:@”lanou3g”]; 指定初始化方法创建

NSString *string2 = [NSString stringWithFormat:@”lanou%dg”,4]; 创建指定格式串的字符串对象

NSString *string3 = [[NSString alloc] initWithString:@”lanou3g”]; 创建字符串对象等同于下列语法糖

NSString *string4 = [NSString stringWithString:@”langou4g”]; 创建字符串对象等同于下列语法糖

NSString *string = @”I’m a good boy!”;   语法糖

C语言字符串在转成OC字符串对象时,需要进行转码,转码格式选择NSUTF8StringEncoding枚举值.

char *Cstring = “This is Carson”;

NSString *string5 = [[NSString alloc] initWithCString:cString encoding:NSUTF8StringEncoding];//指定初始化方法创建对象

NSString *string6 = [NSString stringWithCString:cString encoding:NSUTF8StringEncoding];//便利构造器方法创建对象

根据对应路径的文本文档的内容创建OC字符串对象

//路径:/Users/xalo/Desktop/621222.txt

NSString *string7 = [[NSString alloc] initWithContentsOfFile:@”/Users/xalo/Desktop/621222.txt” enCoding:NSUTF8StringEncoding error:nil];//利用指定初始化创建对象

NSString *string8 = [NSString stringWithContentsOfFile:@”/Users/xalo/Desktop/621222.txt” enCoding:NSUTF8StringEncoding error:nil];//利用便利构造器创建对象

使用字符串对象的属性可以求得字符串的长度. .length属性为只读属性,不可修改.

NSSInteger length = string8.length;

通过characterAtIndex:方法可以求出字符串对象中每个字符.

for (int i = 0; i < string1.length – 1; i++) {

NSLog(@”%c”,[string1 characterAtIndex:i]);//依次取出字符串对象中的每个字符

}

比较两个字符串是否相同的方法.

isEqualToString:方法返回值为BOOL类型.1为真,0为假

BOOL result1 = [string7 isEqualToString:string8];

NSLog(@”%@”,result1 ? @”YES” : @”NO”);//两字符串对象相同输出YES,不同输出NO

比较两个字符串的大小顺序,-1表示调用方法字符串比参数字符串小,为升序.0表示一致.1表示调用方法的字符串比参数字符串大,为降序.

NSString *string9 = @”abc”;

NSString *string10 = @”aba”;

NSComparisonResult comparisonResult = [string9 compare:string10];

//NSComparisonResult是一个枚举类型,返回值为NSOrderedAscending,NSOrderedSame,NSOrderedDescending.值分别为-1,0,1

获取从指定下标开始(包含指定下标)到字符串结尾的子字符串.

NSString *subString1 = [string8 subStringFromIndex:(5)];

获取从原字符串起始下标开始到指定下标(不包含指定下标)的子字符串.

NSString *subString2 = [string 8 subStringToIndex:(5)];

结构体NSRange包含两个长整型成员,分别为起始下标和长度.如果使用range截取子字符串,则表示从指定下标开始截取指定长度的子字符串并返回.

NSRange range1 = NSMakeRange(1,2);//NSRange结构体的两个成员为:location(下标),length(下标开始长度).

NSString *subString3 = [string 8 subStringWithRange:range];

字符串拼接的方法

NSString *appendString1 = [string1 stringByAppendingString:@”Hello world!”];

拼接指定格式串的字符串

NSString *appendString2 = [string1 stringByAppendingFormat:@”%d %c %d”,4,’+’,5];

通过指定的参数字符串替换对于范围的字符们–字符串替换

NSRange range2 = NSMakeRange(1,4);

NSString *replaceString1 = [string1 stringByReplacingCharactersInRange:range2 withString:@”haha”];

获取指定字符串在原字符串中的范围

NSRange range3 = [string8 rangeOfString:@”abc”];

NSString *replaceString2 = [string1 stringByReplacingCharactersInRage:range3 withString:@”def”];

判断字符串是否包含指定字符串//返回值为BOOL类型

BOOL result2 = [string1 containString:@”abc”];

NSLog(@”%@”,result2 ? @”YES” : @”NO”);

字符串全部以大写字母显示,返回大写字符串

NSLog(@”%@”,string1.uppercaseString);

字符串全部以小写字母显示,返回小写字符串

NSLog(@”%@”,string1.lowercaseString);

字符串每个首字母大写显示,返回首字母大写字符串

NSLog(@”%@”,string1.capitalizedString);

判断是否有前缀字符串//返回值为BOOL类型

BOOL result3 = [string1 hasPreFix:@”http”];

NSLog(@”%@”,result3 ? @”YES” : @”NO”);

判断是否有后缀字符串//返回值为BOOL类型

BOOL result4 = [string1 hasSufFix:@”.com”];

NSLog(@”%@”,result4 ? @”YES” : @”NO”);

2. NSMutableString类 为NSString的子类

NSMutableString *mutableString1 = [[NSMutableString alloc] initWithString:@”This is Carson”];

NSMutableString *mutableString2 = [NSMutableString string];

[mutableString2 setString:@”This is King of the space!”];

NSLog(@”%@”,mutableString2);

可变字符串的两种拼接方法,除了可以使用继承自NSString类的拼接方法返回结果字符串,可变字符串提供拼接修改字符串对象的方法.

[mutableString1 appendString:@”abc”];

[mutableString1 appendFormat:@”%d %c %d”,1,’+’,1];

为可变字符串在指定下标插入字符串的方法.

[mutableString1 insertString:@”asdf” atIndex:0];

通过继承来的方法获取指定字符串在可变字符串中的范围并删除指定字符串

NSRange deleteRange = [mutableString1 stringOfRange:@”bc”];

[mutableRange deleteCharactersInRange:deleteRange];

可变字符串提供的用于替换指定范围的字符为给定的字符串的方法

[mutableString2 replaceCharactersInRange:NSMakeRange(1,4) withString:@”haha”];

二. NSNumber类

NSNumber类可以将基本数据类型准换成为对象

Eg: 

NSNumber *intNumber = [NSNumber numberWithInt:3];

NSNumber *charNumber = [NSNumber numberWithChar:’+’];

NSNumber类提供的属性可以将实例对象转化为相对于的基本数据类型.

int a = intNumber.intValue;

char c = charNumber.charValue;

三. NSValue类

NSValue类的对象可以封装结构体,同样的呗NSValue封装的结构体,也可以通过自身的实例方法getValue返回.

typedef struct 

{

char *name;

int age;

}Student;

Student student1 = {“Carson”,23};

NSValue *stuValue = [NSValue valueWithBytes:&student1 objCType:@encode(Student)];

Student student2;

[stuValue getValue:&student2];//将NSValue的实例化对象stuValue的赋给student2.

    原文作者:CarsonChen
    原文地址: https://www.jianshu.com/p/14d7882c4dae
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞