这次总结下OC里一些对字符串的一些操作。

  创建字符串对象时,会创建一个内容不可更改的对象,称为不可变对象。可以使用NSString类处理不可变字符串。你经常需要处理字符串并更改字符串中的字符。例如,可能希望从字符串中删除一些字符,或对字符串执行搜索替换操作。这种类型的字符串是使用NSMutableString类处理的。

 //
// main.m
// Number_String_List_15
//
// Created by SeanAstin on 15/12/30.
// Copyright © 2015年 SeanAstin. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A";
NSString *str2 = @"This is string B";
NSString *res;
NSComparisonResult compareResult; //计算字符串中的值
NSLog(@"Length of str1: %lu",[str1 length]); //将一个字符串复制到另一个字符串
res = [NSString stringWithString:str1];
NSLog(@"copy: %@",res); //将一个字符串复制到另一个字符串的末尾
str2 = [str1 stringByAppendingString:str1];
NSLog(@"Concatentation: %@",str2); //验证两个字符串是否相等
if([str1 isEqualToString:res] == YES)
NSLog(@"str1 == res");
else
NSLog(@"str1 != res"); //验证一个字符串是否小于、等于或大于另一个字符串
compareResult = [str1 compare:str2];
if(compareResult == NSOrderedAscending)
NSLog(@"str1 < str2");
else if(compareResult == NSOrderedSame)
NSLog(@"str1 == str2");
else//必须是NSorderedDescending
NSLog(@"str1 > str2"); //将字符串转换为大写
res = [str1 uppercaseString];
NSLog(@"Uppercase conversion: %s",[res UTF8String]); //将字符串转换为小写
res = [str1 lowercaseString];
NSLog(@"Lowercase conversion: %@",res);
}
return ;
}
 //
// main.m
// Number_String_List_15
//
// Created by SeanAstin on 15/12/30.
// Copyright © 2015年 SeanAstin. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A";
NSString *str2 = @"This is string B";
NSString *res;
NSRange subRange; //从字符串中提取前3个字符
res = [str1 substringToIndex:];
NSLog(@"First 3 chars of str1: %@",res); //提取从索引5开始直到结尾的子字符串
res = [str1 substringFromIndex:];
NSLog(@"Chars from index 5 of str1: %@",res); //提取从索引8开始索引到13的子字符串(6个字符)
res = [[str1 substringFromIndex:] substringToIndex:];
NSLog(@"Chars from index 8 through 13: %@",res); //更简单的方法
res = [str1 substringWithRange:NSMakeRange(, )];
NSLog(@"Chars from index 8 through 13: %@",res); //从另一个字符串中查找一个字符串
subRange = [str1 rangeOfString:@"string A"];
NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length);
subRange = [str1 rangeOfString:@"string B"];
if(subRange.location == NSNotFound)
NSLog(@"String not found");
else
NSLog(@"String is at index %lu, length is %lu",subRange.location,subRange.length); }
return ;
}

  NSMutableString类可以用来创建可以更改字符的字符串对象。因为是 NSString类的子类,所以可以使用NSString类的所有方法。

  在讲述可变于不可变字符串对象时,我们谈到了更改字符串中的实际字符。任意一个可变或不可变字符串对象在程序执行期间,总是可以被设为完全不同的字符串对象的。

 //
// main.m
// Number_String_List_15
//
// Created by SeanAstin on 15/12/30.
// Copyright © 2015年 SeanAstin. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A";
NSString *search,*replace;
NSMutableString *mstr;
NSRange substr; //从不可变字符串创建可变字符串 mstr = [NSMutableString stringWithString:str1];
NSLog(@"%@",mstr); //插入字符
[mstr insertString: @" mutable" atIndex:];
NSLog(@"%@",mstr); //插入末尾进行有效拼接
[mstr insertString:@" and string B" atIndex:[mstr length]];
NSLog(@"%@",mstr); //直接使用appendString
[mstr appendString:@" and string C"];
NSLog(@"%@",mstr); //根据范围删除子字符串
[mstr deleteCharactersInRange:NSMakeRange(, )];
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(, ) withString:@"a mutable string"];
NSLog(@"%@",mstr); //查找和替换
search = @"This is";
replace = @"An example";
substr = [mstr rangeOfString: search];
if(substr.location != NSNotFound){
[mstr replaceCharactersInRange:substr withString:replace];
NSLog(@"%@",mstr);
} //查找和替换所有匹配项
search = @"a";
replace = @"X";
substr = [mstr rangeOfString:search];
while(substr.location != NSNotFound){
[mstr replaceCharactersInRange:substr withString:replace];
substr = [mstr rangeOfString:search]; }
NSLog(@"%@",mstr);
}
return ;
}

Objective-C 笔记 字符串操作的更多相关文章

  1. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  2. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

  3. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  4. java入门学习笔记之2(Java中的字符串操作)

    因为对Python很熟悉,看着Java的各种字符串操作就不自觉的代入Python的实现方法上,于是就将Java实现方式与Python实现方式都写下来了. 先说一下总结,Java的字符串类String本 ...

  5. R学习笔记 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符,函数nchar用于获得字符串中的字符数量: > s='read' > nc ...

  6. C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  7. PHP字符串操作汇总

    PHP开发中常用的字符串操作介绍 -- 简明现代魔法 PHP学习笔记之字符串的简单处理 - RuanJava的专栏 - 博客频道 - CSDN.NET PHP String 函数

  8. 《python基础教程(第二版)》学习笔记 字符串(第3章)

    <python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...

  9. Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

随机推荐

  1. MVC linq语法分页

    分页效果图: 表格下面的分页按钮样式是我自己做的一个样式,这4个按钮都是用同一张图片:这张图片是用ps做的. 接下来我们说一下怎么去做这个样式 第一css代码: ._HomePage,._Previo ...

  2. 解决octave for windows安装包无法通过SourceForge下载的问题

    近期SourceForge访问不了,可以通过访问SourceForge的ftp镜像ftp://sourceforge.nchc.org.tw/进行下载: ftp下载工具可以使用FileZilla,可在 ...

  3. 使用Struts1完成用户登录功能

    1.Struts框架 框架(framework):就是一系列代码和开发模式的整合,使用框架后,所有开发人员都会按照框架提供的规范进行开发,使代码更容易维护和扩展. 使用框架的优点: 1)   易于维护 ...

  4. HDOJ 2200 Eddy's AC难题(数学组合概率题)

    Problem Description Eddy是个ACMer,他不仅喜欢做ACM题,而且对于Ranklist中每个人的ac数量也有一定的研究,他在无聊时经常在纸上把Ranklist上每个人的ac题目 ...

  5. CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示

    题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/A 解题思路: 将16进制的表示方法列在一个数组里面 ...

  6. vector的含义

    数学中,vector(向量)表示一个量,由大小和方向构成.比如坐标中的一个带箭头的线段 -- 它1厘米长,正弦值六分之一π(30度角). 计算机的c++.java中,vector表示一种一维的数组.比 ...

  7. 具体解释VB中连接access数据库的几种方法

    在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 ...

  8. Android 自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  9. AndroidStudio文件夹结构视图讲解

    近期,Google已经打算废弃Eclipse.而要大力支持他的亲生儿子AndroidStudio了,已经不在维护Eclipse了,也就是说在Eclipse上面出了什么问题.Google已经不在会管了, ...

  10. Java基础知识强化28:Scanner类之Scanner类的概述

    1.Scanner概述:         JDK5以后用于获取用户的键盘输入 2.Scanner的构造方法:         public Scanner (InputStream  source) ...