//
// 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-可变字符串的更多相关文章

  1. Object-C中的字符串对象1-不可变字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. 不可变字符串String与可变字符串StringBuilder、StringBuffer使用详解

    String字符串 char类型只能表示一个字符,而String可以表示字符串,也就是一个字符序列.但String不是基本类型,而是一个定义好的类,是一个引用类型.在Java中,可以将字符串直接量赋给 ...

  3. JS中实现JSON对象和JSON字符串之间的相互转换

    对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...

  4. Java中JNI的使用详解第四篇:C/C++中创建Java对象和String字符串对象及对字符串的操作方法

    首先来看一下C/C++中怎么创建Java对象:在JNIEnv中有两种方法是用来创建Java对象的: 第一种方法: jobject  NewObject(jclass clazz  , jmethodI ...

  5. Java中String被称为不可变字符串的原因

    很多东西,看似可变,实际上不过是是新桃换旧符罢了. 代码: /** * String之所以被称为不可变字符串 */ static void testString(){ String str = &qu ...

  6. javascript中的字符串对象和数组对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  7. javascript中的字符串对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  8. java中String是对象还是类?详解java中的String

    有很多人搞不懂对象和类的定义.比如说java中String到底是对象还是类呢? 有人说String 既可以说是类,也可以说是对象. 其实他这么说也没问题, 类和对象其实都是一个抽象的概念. 我们可以把 ...

  9. python tips:小整数对象池与字符串intern

    本文为is同一性运算符的详细解释.is用于判断两个对象是否为同一个对象,具体来说是两个对象在内存中的位置是否相同. python为了提高效率,节省内存,在实现上大量使用了缓冲池技术和字符串intern ...

随机推荐

  1. 使用 HAProxy, PHP, Redis 和 MySQL 轻松构建每周上亿请求Web站点

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. Appium+python自动化54-appium-doctor报错已解决(SyntaxError: Unexpected token ...)

    前言 由于新版的appium desktop版本是不带appium-doctor这个包的,所以想用appium-desktop检查环境的话需要另外的安装了,在安装的时候小编又遇到了一个坑 报错信息:S ...

  3. [Android Pro] android 杀死进程的方法

    1: 杀死自己进程的方法 android.os.Process.killProcess(Process.myPid()); 2:杀死别人进程的方法(不能杀死自己) -------a: activity ...

  4. Android NDK开发----- JNI多线程

    一.概述 JNI编程和Linux上的C/C++编程还是挺相似的,每次java调用JNI中的函数时都会传入有关JVM的一些参数(如JNIEnv,jobject),每次JNI回调java中的方法时都要通过 ...

  5. Orchard运用 - 为评论启用Gravatar头像

    在前一篇随笔中我曾分享如何为Orchard特定主题添加独立代码文件, 今儿延续如何把对应代码应用到Views上. 对此我不妨把为评论启用Gravatar头像这一例子来实现.其实很简单, 思路大概就是创 ...

  6. Django练习

    实现功能: 登录功能 添加功能 删除功能(未实现) 代码: index.html <!DOCTYPE html> <html lang="en"> < ...

  7. popupWindow 用法总结 控制位置

    android中的dialog,以及activiy形式的dialog均是模态对话框,对话框不消失时,不能对其他页面进行操作,也就是其他页面不能获得焦点.而PopupWindow是非模态对话框,对话框显 ...

  8. git 使用详解-- tag打标签

    Git 的标签管理.跟大多数的 VCS 工具一样,git 也有在历史状态的关键点“贴标签”的功能,一般人们用这个功能来标记发布点(例如’v1.0′). 列出git中现有标签 要想列出git中现有的所有 ...

  9. C# 16位GUID

    摘自: http://www.cnblogs.com/lcwzj/archive/2009/04/16/1436992.html 当我们想要获得一个唯一的key的时候,通常会想到GUID.这个key非 ...

  10. Android怎样设置圆角button

    1. 在res文件夹下的drawable文件夹下新建shape.xml文件 <?xml version="1.0" encoding="utf-8"?&g ...