IOS NSString类字符串拼接与截取注意点

来源:互联网 发布:centos 6.5的内核版本 编辑:程序博客网 时间:2024/06/06 08:53

不管是使用什么语言,做什么样的系统,都是需要封装字符串的。本人也是从Java转到了IOS,确实的说,有一些的不适应,不管是方法名还是使用方法。

这里说一下NSString在拼接字符串上面的问题。

NSString 提供的拼接方法主要有两个:

- (NSString *)stringByAppendingString:(NSString *)aString;

- (NSString *)stringByAppendingFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

一个是直接拼接NSString类型,一个是拼接其他你想format的字符串。

这两个方法使用还是较为频繁的。

看代码:

(NSString *)buildNameStr =@""; 

[buildNameStr stringByAppendingString:@"dsafsafsdfadsf"];

你会发现,没有任何效果,这是怎么回事?

如果是新手,估计也得花个几分钟查查问题所在了。我明明是拼接了呀!怎么会这样呢?(老手不吐槽弱智哈!)

你需要这样:

 [buildNameStr stringByAppendingString:@"dsafsafsdfadsf"];

buildNameStr = [buildNameStr stringByAppendingString:[NSString stringWithFormat:@"%@,",buildName]];

其实,这与Java中的String应该是一样的道理。

NSString对象每一次拼装时拿的地址空间不是以前的地址空间。

什么意思呢?

就是之前新建buildNameStr的时候,开辟了一块内存空间。由于NSString的特性,NSString为定长的。不像java中的BufferString。

再拼接之后,实际上是开辟了另外一个内存地址存放拼接后的字符串。

所以,你打印之后,buildNameStr 还是@"".

你需要把buildNameStr对象的指向拼接后的字符串地址。即是:

 [buildNameStr stringByAppendingString:@"dsafsafsdfadsf"];

buildNameStr = [buildNameStr stringByAppendingString:[NSString stringWithFormat:@"%@,",buildName]];


stringByAppendingFormat:方法也就一样的道理了。不一样的是,OC与C语言一样,想要在字符串中拼接上整型,或者其他的时候,都是需要使用NSString的拼装方法StringFormat的,是不是很麻烦。我也觉得,怎么都没java来的快,String a="b"+1;多简单明了!

OC需要[NSString stringFormat:@"%d",1] 


当然,你可以使用可变字符串对象

/可变字符串 
NSMutableString *szMuMyString = [NSMutableString stringWithString:@"Hello"]; 
[szMuMyString appendFormat:@"World"];   


下面是NSString的截取字符串的代码:

- (NSString *)substringFromIndex:(NSUInteger)from;

- (NSString *)substringToIndex:(NSUInteger)to;

- (NSString *)substringWithRange:(NSRange)range; 


看名字都知道了,fromIndex,toIndex,withRange 

从哪个位置其到尾,从开头到哪个位置,从哪到哪之间的位置。

不过,这里需要注意的是,这个index是数组的下标的。从0开始算。

0 0
原创粉丝点击