iOS精选字符串处理大全

无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的。简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解每个方法如何使用,以下闲来无事做了一个简单的总结,便于以后使用。

1.字符串的创建

//字符串创建工厂

NSString *str1 = [NSString stringWithFormat:@"%d, %d",1,2];

NSString *str2 = [NSString stringWithString:@"hello"];

NSString *str3 = [NSString stringWithCString:"aaa" encoding:NSUTF8StringEncoding];

//普通方法

NSString *str4 = @"hello";

2.获取字符串的长度 -(unsigned int) length

NSString *str = @"Hello";

NSUInteger leng= [ str length];

3.字符串的比较 == 比较字符串的指针  isEqualToString 比较字符串的内容返回值是BOOL类型

以下来利用字符串的浅拷贝和深拷贝来测试上面的两个方法

retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。

copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, 引用计数每次加一。始终返回一个不可变对象。

mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。

NSString *string1 = @"hello";

NSString *string2 = [string1 mutableCopy];

NSString *string3 = [string1 copy];

//NSLog(string2);

//NSLog(string3);

//比较指针

if (string1 == string2)

{

NSLog(@"指针相同");

}

else

{

NSLog(@"string1通过深拷贝给string2所以指针不同");

}

//比较指针

if (string1 == string3)

{

NSLog(@"string1通过浅拷贝给string3所以指针相同");

}

else

{

NSLog(@"string1通过深拷贝给string3所以指针不同");

}

//比较内容

if ([string1 isEqualToString:string2] == YES)

{

NSLog(@"string1 和 String2的内容相同");

}

else

{

NSLog(@"string1 和 String2的内容不同");

}

4.字符串的比较函数compare,

​NSString下面的compare函数的返回值是一个枚举类型NSComparisonResult;  NSOrderedAscending=-1, NSOrderedSame=0,NSOrderedDescending = 1 ; ​    ​​对compare进行重载,可以传入option参数, 1 代表不区分大小写,2代表区分大小写,64代表比较字符串的个数而不是字符串的值。

//字符串比较函数compare

NSString *strCompare1 = @"abcde";

NSString *strCompare2 = @"bcdef";

//compare的返回类型是NSComparisonResult

NSComparisonResult result = [strCompare1 compare:strCompare2];

switch (result) {

case NSOrderedAscending:

NSLog(@"升序(str1 < str2)");

break;

case NSOrderedSame:

NSLog(@"两个字符串相等");

break;

case NSOrderedDescending:

NSLog(@"降序(str1 > str2)");

break;

default:

NSLog(@"别的情况!");

break;

}

​5.字符串的拼接函数 stringByAppendingString : (NSString *) aString;  和 stringByAppendingFormat : (NSString *) format …;

NSString *append1 = @"I love ";

NSString *append2 = @"china";

//用stringByAppendingString来进行字符串的拼接

append1 = [append1 stringByAppendingString:append2];

NSLog(append1);

//用stringByAppendingFormat来进行字符串的拼接

append1 = [append1 stringByAppendingFormat:@" iPhone%dS",6];

NSLog(append1);

​6.字符串的查找

​    ​-(BOOL) hasPrefix : (NSString *) string: 判断一个字符串是否是以string开头;

​    ​-(BOOL) hasSuffix : (NSString *) string: 判断一个字符串是否是以string结尾;

​    ​-(NSRange) rangeOfString:(NSString *) string; 模式匹配字符串,返回类型是结构体NSRange, 结构体 NSRange里有两个值都是整型的,location代表子字符串在​原有字符串中的位置,length代表长度。

//字符串的查找

NSString *parent = @"123456789";

NSString *pre = @"123";

NSString *suf = @"789";

NSString *mid =@"456";

//匹配开头

if ([parent hasPrefix:pre] == YES) {

NSLog(@"匹配成功");

}

//匹配结尾

if ([parent hasSuffix:suf] == YES) {

NSLog(@"匹配成功");

}

//从中间匹配

NSRange range = [parent rangeOfString:mid];

NSLog(@"location = %d,  length = %d", range.location, range.length);

​7.字符串的截取

​    -(NSString *) substringFromIndex : (NSUInteger) from 获取从字符串的开头到字符串结尾的字符串内容,不包含from位置的字符。

​    ​-(NSString *)substringToIndex : (NSUInterger) to  获取从字符串开头到字符串的to位置的字符串内容,包含to位置的字符;

​    ​-(NSString *) substringWithRange:(NSRange) range 根据NSRange这个范围来获取字符串;

//字符串的截取

NSString *parent = @"123456789";

//从一个位置截取字符串到结尾:可以从零开始

NSString *toEnd = [parent substringFromIndex:6];

NSLog(toEnd);

//从一个开头然后到传入的值

NSString *fromBegin = [parent substringToIndex:3];

NSLog(fromBegin);

//从一个位置截取指定长度

NSRange range = {3,3};

NSString *rangString = [parent substringWithRange:range];

NSLog(rangString);

​8.字符串中的类型转换函数

​    ​-(double) doubleValue; 把字符串的内容转换为double类型

​    ​-(float) floatValue; 把相应的字符串转换为float类型

​    ​-(int) intValue;把相应的字符串转换为int类型

//字符串的类型转换

NSString *test = @"1234.123456789";

//转换为整数

int strToInt = [test intValue];

NSLog(@"strToInt = %d", strToInt);

//转换为float

float strToFloat = [test floatValue];

NSLog(@"strToFloat = %.9f", strToFloat);

//转换为double

double strToDouble = [test doubleValue];

NSLog(@"strToDouble = %.9f", strToDouble);

9.字符串替换函数

-(NSString *)stringByReplacingOccurrencesOfString: (NSString *) target  withString : (NSString *) replacement; 把字符串target转换为replacement

-(NSString *)stringByReplacingCharactersInRange : (NSRange) range withString : (NSString *) replacement; 把指定范围内的字符串进行替换;

​​-(NSArray *) componentsSeparatedByString:(NSString *) separator:以字符串中的某个字符进行分割,返回数组对象

//字符串替换函数

NSString *string = @"abc,def,g";

//将字符串中特定的字符串换成指定的字符串

NSString *after = [string stringByReplacingOccurrencesOfString:@"a" withString:@"zzzzzz"];

NSLog(after);

//将range范围内的字符串替换为相应的字符串

NSRange range = {0,6}; //从1开始到第6个

NSString *rangeString = [after  stringByReplacingCharactersInRange:range withString:@"a"];

NSLog(rangeString);

//分割字符串,把分割完的字符串存入数组中

NSArray *split = [string componentsSeparatedByString:@","];

for (int i = 0; i < [split count]; i++) {

NSLog(@"%@", [split objectAtIndex:i]);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容