Object-C中的字符串对象2-可变字符串
//
// main.m
// 字符串-可变字符串
//
// Created by zhangqs008 on 14-2-13.
// Copyright (c) 2014年 zhangqs008. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ @autoreleasepool { NSString *str1=@"this is string A";
NSString *search;
NSString *replace;
NSMutableString *mutableStr;
NSRange subStr; //01.从不可变字符串创建可变字符串
mutableStr=[NSMutableString stringWithString:str1];
NSLog(@"01 %@",mutableStr); //02.插入字符,注意:是直接修改的字符串对象,无返回值
[mutableStr insertString:@" mutable" atIndex:7];
NSLog(@"02 %@",mutableStr); //03.插入末尾进行有效拼接
[mutableStr insertString:@" and string B" atIndex:[mutableStr length]];
NSLog(@"03 %@",mutableStr); //04.直接用appendString
[mutableStr appendString:@" and string C"];
NSLog(@"04 %@",mutableStr); //05.根据范围删除字符串 deleteCharactersInRange(从*开始,删除*个字符)
[mutableStr deleteCharactersInRange:NSMakeRange(16,13)];
NSLog(@"05 %@",mutableStr); //06.查找然后将其删除
subStr=[mutableStr rangeOfString:@"string B and "];
if(subStr.location!=NSNotFound)
{
[mutableStr substringWithRange:subStr];
NSLog(@"06 %@",mutableStr); } //07.直接设置为可变字符串
[mutableStr setString:@"this is string A"];
NSLog(@"07 %@",mutableStr); //08.替换一些字符
[mutableStr replaceCharactersInRange:NSMakeRange(8, 8) withString:@"a mutable string"];
NSLog(@"08 %@",mutableStr); //09.查找和替换
search=@"this is";
replace=@"An example of"; subStr=[mutableStr rangeOfString:search];
if(subStr.location!=NSNotFound)
{
[mutableStr replaceCharactersInRange:subStr withString:replace];
NSLog(@"09 %@",mutableStr);
} //10.查找和替换所有匹配项
search=@"a";
replace=@"X";
subStr=[mutableStr rangeOfString:search];
while (subStr.location!=NSNotFound) {
[mutableStr replaceCharactersInRange:subStr withString:replace];
subStr=[mutableStr rangeOfString:search];
}
NSLog(@"10 %@",mutableStr); //也可以这样写
[mutableStr replaceOccurrencesOfString:search withString:replace options:nil range:NSMakeRange(0, [mutableStr length])]; NSLog(@"10 %@",mutableStr); }
return 0;
}
输出结果:
2014-02-13 20:38:30.074 05.字符串-可变字符串[997:303] 01 this is string A
2014-02-13 20:38:30.076 05.字符串-可变字符串[997:303] 02 this is mutable string A
2014-02-13 20:38:30.079 05.字符串-可变字符串[997:303] 03 this is mutable string A and string B
2014-02-13 20:38:30.079 05.字符串-可变字符串[997:303] 04 this is mutable string A and string B and string C
2014-02-13 20:38:30.080 05.字符串-可变字符串[997:303] 05 this is mutable string B and string C
2014-02-13 20:38:30.080 05.字符串-可变字符串[997:303] 06 this is mutable string B and string C
2014-02-13 20:38:30.081 05.字符串-可变字符串[997:303] 07 this is string A
2014-02-13 20:38:30.081 05.字符串-可变字符串[997:303] 08 this is a mutable string
2014-02-13 20:38:30.081 05.字符串-可变字符串[997:303] 09 An example of a mutable string
2014-02-13 20:38:30.082 05.字符串-可变字符串[997:303] 10 An exXmple of X mutXble string
2014-02-13 20:38:30.082 05.字符串-可变字符串[997:303] 10 An exXmple of X mutXble string
Program ended with exit code: 0
Object-C中的字符串对象2-可变字符串的更多相关文章
- Object-C中的字符串对象1-不可变字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- 不可变字符串String与可变字符串StringBuilder、StringBuffer使用详解
String字符串 char类型只能表示一个字符,而String可以表示字符串,也就是一个字符序列.但String不是基本类型,而是一个定义好的类,是一个引用类型.在Java中,可以将字符串直接量赋给 ...
- JS中实现JSON对象和JSON字符串之间的相互转换
对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...
- Java中JNI的使用详解第四篇:C/C++中创建Java对象和String字符串对象及对字符串的操作方法
首先来看一下C/C++中怎么创建Java对象:在JNIEnv中有两种方法是用来创建Java对象的: 第一种方法: jobject NewObject(jclass clazz , jmethodI ...
- Java中String被称为不可变字符串的原因
很多东西,看似可变,实际上不过是是新桃换旧符罢了. 代码: /** * String之所以被称为不可变字符串 */ static void testString(){ String str = &qu ...
- javascript中的字符串对象和数组对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
- javascript中的字符串对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
- java中String是对象还是类?详解java中的String
有很多人搞不懂对象和类的定义.比如说java中String到底是对象还是类呢? 有人说String 既可以说是类,也可以说是对象. 其实他这么说也没问题, 类和对象其实都是一个抽象的概念. 我们可以把 ...
- python tips:小整数对象池与字符串intern
本文为is同一性运算符的详细解释.is用于判断两个对象是否为同一个对象,具体来说是两个对象在内存中的位置是否相同. python为了提高效率,节省内存,在实现上大量使用了缓冲池技术和字符串intern ...
随机推荐
- WPF ClickOnce应用程序IIS部署发布攻略
WPF程序非常适合公司内网使用,唯一缺点就是客户端要安装.net框架4.0.优势也很明显,在客户端运行的是一个WinForm程序,自动下载,可以充分利用客户机的性能,而且是以当前的Windows用户权 ...
- /etc/fstab格式的问题
[root@localhost etc]# cat fstab /dev/VolGroup00/LogVol00 / ext3 defaults ...
- 为11gR2 Grid Infrastructure增加新的public网络
在某些环境下,运行11.2版本的RAC数据库的服务器上,连接了多个public网络,那么就会有如下的需求: 给其他的,或者说是新的public网络增加新的VIP地址. 在新的public网络上增加SC ...
- iOS:沙盒、偏好设置、归档、解归档
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...
- calibre怎么转换文件格式
首先打开calibre软件,需要转换的书目不在列表的按照上一个教程将文件导入书籍列表. 选中需要转化格式的书籍之后右击,会跳出一个比较长的菜单栏,找到转换书籍选项,此处有两个选项,一个是逐个转换,另外 ...
- [转] 菜鸟手脱VMP,附上脱壳过程和自己写的脚本,可跨平台
转载:http://www.52pojie.cn/thread-467703-1-1.html 工作需要要脱一个VMP壳,我是一个从来没接触过脱壳的人.瞬间那种心情遇到的人应该都知道!没办法硬着头皮找 ...
- (剑指Offer)面试题38:数字在排序数组中出现的次数
题目: 统计一个数字在排序数组中出现的次数. 思路: 1.顺序遍历 顺序扫描一遍数组,统计该数字出现的次数. 时间复杂度:O(n) 2.二分查找 假设我们需要找的数字是k,那么就需要找到数组中的第一个 ...
- 【架构】OpenResty相关资料
OpenResty最佳实践 在2012年的时候,我加入到奇虎360公司,为新的产品做技术选型.由于之前一直混迹在python圈子里面,也接触过nginx c模块的高性能开发,一直想找到一个兼备pyth ...
- 使用Nodejs的Nodemailer通过163信箱发送邮件例程
首先需要安装一下nodemailer #nmp nodemailer install --save 然后就参照官方文档的例程改写一下就行了,代码如下: 'use strict'; const node ...
- KineticJS教程(6)
KineticJS教程(6) 作者: ysm 6.拖拽 6.1.拖拽功能 要实现Kinetic对象的拖拽功能很简单,只需要将图形对象的draggable属性设为true就可以了. <script ...