字符串对象(3)
来源:互联网 发布:网络推广年度工作总结 编辑:程序博客网 时间:2024/05/17 03:58
NSMutavleString类可以用来创建可以更改的字符串对象。因为是NSString类的子类,所以可以使用NSString类的所有方法
任何一个可变与不可变的字符串对象在程序执行期间,总可以被设为完全不同的字符串对象。例如:
str1 = @“This is a string”;
...
str1 = [str1 substringFromIndex: 5];
在这个例子中,str1可以声明为可变的字符串对象,也可以声明为不可变的字符串对象。
以下有一些处理可变字符串的方法:
#import <Foundation/Foundation.h>
int main ()
{
@autoreleasepool {
NSString *str1 =@"this is string A";
NSString *search,*replace;
NSRange substr; //这里没有星号不是引用
NSMutableString *mstr;
//从不可变字符串创建可变字符串
mstr = [NSMutableStringstringWithString: str1];
NSLog(@"%@",mstr);
//插入字符
[mstr insertString:@" mutable"atIndex:7];
NSLog(@"%@",mstr);
//插入末尾进行有效拼接
[mstr insertString:@" and string B"atIndex: [mstrlength]];
NSLog(@"%@",mstr);
//直接使用appendString
[mstr appendString:@" and string C"];
NSLog(@"%@",mstr);
//查找然后将其删除
substr = [mstr rangeOfString:@"string B and "];
if(substr.location !=NSNotFound)
{
[mstr deleteCharactersInRange:substr];
NSLog(@"%@",mstr);
}
//直接设置为可变字符串
[mstr setString:@"This is string A"];
NSLog(@"%@",mstr);
//替换一些字符
[mstr replaceCharactersInRange:NSMakeRange(8,8)withString:@"a mutable string"];
NSLog(@"%@",mstr);
//查找替换
search = @"this is";
replace = @"An example of";
substr = [mstr rangeOfString:search];
if(substr.location !=NSNotFound)
{
[mstr replaceCharactersInRange:substrwithString:replace];
NSLog(@"%@",mstr);
}
//查找和替换所有的匹配项
search = @"a";
replace =@"X";
substr = [mstr rangeOfString: search];
while(substr.location !=NSNotFound)
{
[mstr replaceCharactersInRange:substrwithString:replace];
substr = [mstr rangeOfString:search];
}
NSLog(@"%@",mstr);
}
return 0;
}
运行结果:2014-08-24 15:46:20.585 testOC[512:303] this is string A
2014-08-24 15:46:20.586 testOC[512:303] this is mutable string A
2014-08-24 15:46:20.587 testOC[512:303] this is mutable string A and string B
2014-08-24 15:46:20.587 testOC[512:303] this is mutable string A and string B and string C
2014-08-24 15:46:20.588 testOC[512:303] this is mutable string A and string C
2014-08-24 15:46:20.588 testOC[512:303] This is string A
2014-08-24 15:46:20.589 testOC[512:303] This is a mutable string
2014-08-24 15:46:20.589 testOC[512:303] This is X mutXble string
Program ended with exit code: 0
声明NSMutableString *mstr;
用来存储在程序执行过程中值可能更改的字符串对象。
mstr = [NSMutableString stringWithString: str1];
将stringWithString:方法发送给NSMutableString类时,返回一个可变的字符串对象。而将stringWithString:方法发送给NString时,返回一个不可变的字符串对象。
insertString:atIndex:方法将指定的字符串插入接受者,插入点从指定的索引值开始。与不可变字符串对象不同的是,这里没有返回值,因为被修改的是接受者。它是可变字符串对象,所以可以这么做。
第二个insertString:atIndex:调用length方法将一个字符串插入另一个字符串结尾。appendString:可以使这个任务更简单一些。
使用deleteCharactersInRange:方法可以删除字符串中指定数目的字符,对于以下字符串:
This is mutable string A and string B and string C
应用范围{16,13},从索引数16(或者字符串中 的地17个字符)开始删除13个字符“string A and“,如图:
setString:方法可以使用来设置可变字符串对象的内容,可以用来初始化对象。
replaceCharactersInRange:withString:方法可以用另一个字符串替换这个字符串中的部分内容。字符串大小不必相同,可以使用大小相等或不等的字符串替换另一个字符串。
在最后设置一个循环说明如何实现“查找并全部替换”的操作。搜索字符串被设置为@“a”,替换字符串被设置为@“X”,注意,如果替换字符串中还包括搜索字符串(例如:考虑使用字符串@“aX”替换@“X”),那么将陷入死循环。其次,如果替换字符串为空(也就是不包含字符),那么将有效地删除所有搜索到的字符串。没有空格隔开的相邻引号可指定为空的常量字符串,例如:
replace = @““;
最后,NSMutableString类还包含一个名为replaceOccurrencesOfString:withString:options:range:的方法,可以用来执行搜索并全部替换的操作。其实,上面代码中的while循环可以用如下代码代替:
[mstr replaceOccurrencesOfString:search withString:replace options:nil range:NSMakeRange(0,[mstr length]) ];
这会得到相同的结果,而且可以避免潜在的无限循环。
常见的NSString方法:
常见的NSMutableString方法:
如果需要把字符串分解为语言符号,可以查看Foundation的NSScanner类。
在以上的表格中,url是NSURL对象,path是指明文件路径的NString对象,nsstring是一个NSString对象,i 表示字符串中有效字符数的NSUInteger值,enc指明字符编码的NSStringEncoding对象,err是描述所发生错误的NSError对象,size和opts是NSUinteger,range是指明字符串中有效范围的对象。
- 字符串对象(3)
- 字符串对象
- 字符串对象
- (Python学习3)字符串对象
- Python源码学习笔记 3 字符串对象
- 使用字符串(字符串对象)
- 对象转字符串,字符串转对象
- Redis对象-1-字符串对象
- 数组对象,字符串对象,Match对象
- 自定义对象vs字符串
- javascript字符串对象
- sed字符串对象【替换】
- sed字符串对象【查找】
- 字符串对象分割【cut】
- json对象转字符串
- 对象数组转化字符串
- 拼接JSON字符串对象
- java 字符串对象
- InstallAnywhere 制作安装包介绍
- js的几种页面刷新和跳转
- 如何编写testbench的总结(非常实用的总结)
- 2014找工作总结-机会往往留给有准备的人
- Testbench基本入门
- 字符串对象(3)
- java学习笔记8
- hdu 1241 Oil Deposits(DFS)
- uva1606 Amphiphilic Carbon Molecules
- JQ源码分析
- MFC 之 IPControl 的使用
- 存储引擎
- Hadoop学习笔记-WordCount源码分析
- JS arguments