oc基础  不可变字符串的创建和使用

简介:下面都是字符串基本用法。

1.字符串的创建

//创建oc常量字符串
NSString *str=@"hello world!";
NSLog(@"%@",str); //用c语言的字符串来创建oc的字符串
char *ch="hello world C";
NSString *str2=[[NSString alloc] initWithUTF8String:ch];
NSLog(@"%@",str2); //用格式化来创建字符串
int a=;
NSString *str3=[[NSString alloc] initWithFormat:@"%@ %d",str2,a];
NSLog(@"%@",str3); //用类方法来创建字符串
NSString *str4=[NSString stringWithFormat:@"%@%@",str2,str];
NSString *str5=[NSString stringWithUTF8String:ch];
NSLog(@"%@ , %@",str4,str5); //读取文件来创建字符串
NSString *path=@"/Users/qf/Desktop/my2/Car.h";
NSError *error;
NSString *str6=[[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",str6);

2.字符串的使用

(1)判断两个字符串是否相等和比较大小(区分大小写)

        NSString *str1=@"hello world";
NSString *str2=@"Hello world"; if([str1 isEqualToString:str2])
{
NSLog(@"yes");
}
else
{
NSLog(@"no");
}
if ([str1 compare:str2]==-) {
NSLog(@"str1<str2");
}
else if ([str1 compare:str2]==)
{
NSLog(@"str1==str2");
}
else
{
NSLog(@"str1>str2");
}

(2)判断比较大小(不区分大小写)

        //不区分大小写
if ([str1 caseInsensitiveCompare:str2]==-) {
NSLog(@"str1<str2"); }
else if ([str1 caseInsensitiveCompare:str2]==)
{
NSLog(@"str1==str2"); }
else
{
NSLog(@"str1>str2"); }

(3)大小写转换

        //转大写
NSString *str3=[str1 uppercaseString];
NSLog(@"%@",str3); //转小写
NSString *str4=[str2 lowercaseString];
NSLog(@"%@",str4); //首字母大写,其他变小写
NSString *str5=[str2 capitalizedString];
NSLog(@"%@",str5);

(4)搜索字符

        //查找是否包含
NSString *str6=@"I love huang xiao dan.";
NSString *str7=@"love";
NSRange range=[str6 rangeOfString:str7];
NSLog(@"%d,%d",range.location,range.length);
if (range.location==NSNotFound) {
NSLog(@"没找到");
}
else
{
NSLog(@"找到了");
} //查找某个位置的字符
char c=[str6 characterAtIndex:];
NSLog(@"%c",c);

(5)字符截取

        //从位置0开始,截取到指定的位置,开区间
NSString *str8=[ str6 substringToIndex:];
NSLog(@"%@",str8); //从指定的位置开始,一直截取到字符串的末尾,闭区间
NSString *str9=[str6 substringFromIndex:];
NSLog(@"%@",str9); //截取指定范围的字符串
NSRange range1=NSMakeRange(, );
NSString *str10=[str6 substringWithRange:range1];
NSLog(@"%@",str10);

(6)判断以字符串开头或结尾

         //判断字符串是否以“I”开头
if([str6 hasPrefix:@"I"])
{
NSLog(@"yes");
}
else
{
NSLog(@"no");
}
//判断字符串是否以“dan”结尾
if([str6 hasSuffix:@"dan"])
{
NSLog(@"yes");
}
else
{
NSLog(@"no");
}

(7)字符串转数字类型

        NSString *str11=@"";

        NSLog(@"%d",[str11 intValue]);
//转其他数字类型类似

(8)字符串替换

        NSString *str12=@"I am a good student.";
NSString *str13=[str12 stringByReplacingCharactersInRange:NSMakeRange(, ) withString:@"asjhja"];
NSLog(@"%@",str13);

(9)字符串的分割和组合

        //单个字符分割
NSArray *array=[str12 componentsSeparatedByString:@" "];
NSLog(@"%@",array); //字符集进行分割
NSString *str14=@"I like a cat,and!dn sa!";
NSCharacterSet *set=[NSCharacterSet characterSetWithCharactersInString:@" , !"];
NSArray *array2=[str14 componentsSeparatedByCharactersInSet:set];
NSLog(@"%@",array2); //字符组合
NSString *str15=[array2 componentsJoinedByString:@"!"];
NSLog(@"%@",str15);

oc基础 不可变字符串的创建和使用的更多相关文章

  1. 张超超OC基础回顾01_类的创建,申明属性,以及本质

    一. 类的声明和实现&规则 1.如何编写类的声明 以@interface开头 , 以@end结尾, 然后再class name对应的地方写上 事物名称, 也就是类名即可 注意: 类名的首字符必 ...

  2. OC基础:NSString NSNumber 分类: ios学习 OC 2015-06-17 17:55 77人阅读 评论(0) 收藏

    OC中的基本数据类型 NSString  在64位系统下,相当于long,在非64位系统下,想当于int. CGFloat   在64位系统下,相当于double,在非64位系统之下,想当与float ...

  3. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  4. OC基础12:数字、字符串和集合1

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.有时要将一些数字数据类型的值当做对象来 ...

  5. OC基础 可变字典与不可变字典的使用

    OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDiction ...

  6. OC基础13:数字、字符串和集合2

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 17.Foundation框架的数组是有序 ...

  7. OC基础--字符串

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  8. C++反射机制:可变参数模板实现C++反射(使用C++11的新特性--可变模版参数,只根据类的名字(字符串)创建类的实例。在Nebula高性能网络框架中大量应用)

    1. 概要   本文描述一个通过C++可变参数模板实现C++反射机制的方法.该方法非常实用,在Nebula高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能.Nebula框架在码云的仓库地 ...

  9. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

随机推荐

  1. 图文混排——用表情代替"[文字]"

    1.简单设置带属性的字符串 定义一个NSMutableAttributedString带属性的字符串 NSMutableAttributedString *str = [[NSMutableAttri ...

  2. javaWeb RSA加密使用

      加密算法在各个网站运用很平常,今天整理代码的时候看到了我们项目中运用了RSA加密,就了解了一下. 先简单说一下RSA加密算法原理,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但 ...

  3. redis基础操作

    /** * redis的Java客户端Jedis测试验证 * * @author */ public class Test { /** * 非切片客户端链接 */ private Jedis jedi ...

  4. Tornado模块分类和各模块之间的关系

    1. Core web framework tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application两个重要的类 tornado.https ...

  5. [Search Engine] Compression in Inverted Index

    最近在学一些搜索引擎的内容,感觉挺费劲,所以就用博客当做自己的笔记,遇到一些需要整理的部分,就在这里整理一下. 今天的内容是对inverted index进行压缩.核心思想,用我自己的话来总结,就是“ ...

  6. 空值排序(oracle/sqlserver)

    oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 改变空值办法: (1)用nvl函数或decode函数将null转换为一特定值 替 ...

  7. 织梦dedecms返回上一级链接代码

    如题:织梦dede手机页面,如果我进入了下一级页面,想回上一级,<a href="xx">该用什么标签? 用JS实现,代码如下 <a href="jav ...

  8. Linux - create usergroup, user and Assigning permissions

    第一步:登录已有的Linux系统,使用root账户,登录好以后,如下图: 这样,就登录到Linux系统中,而且是用root用户登录的 注意:如果,你想要创建用户和用户组,那么你当前登录的用户必须有ro ...

  9. 如何用googletest写单元测试

    http://www.uml.org.cn/c++/201203293.asp googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows.linux.Mac等OS平台 ...

  10. Ueditor开发经验

    Ueditor是百度开发的一款免费使用的富文本编辑器. 先前就一直使用Ueditor,觉得功能挺多的,而且还给出了详细的文档,供二次开发. 但Ueditor已经出新的版本(和先前版本很不相同),网上很 ...