在Object C中存在两个类用于操作字符串,NSString和NSMutableString;NSString在赋值之后不能修改其内容和长度,而NSMutableString可以动态的修改字符串内容和长度,其主要区别就和.NET 中的string与StringBuilder之间的区别。

  1. 定义NSString字符串

    在Object C中NSString是一个对象类型,其有多种定义方式:

NSString *str1=@"令狐聪";

        NSString *str2=[NSString stringWithFormat:@"名称: %@ 性别:%s 年龄: %d \n",str1,"男",];

        NSString *str3=[NSString stringWithFormat:@"我的姓名是 令狐聪"];

        NSString *str4=[NSString stringWithUTF8String:"我是任盈盈"];

        NSString *str5=[str4 stringByAppendingString:str3];

        NSString *str6=[str4 stringByAppendingFormat:@" %@",@"笑傲江湖abc"];

        NSLog(@"str1=%@",str1);
NSLog(@"str2=%@",str2);
NSLog(@"str3=%@",str3);
NSLog(@"str4=%@",str4);
NSLog(@"str5=%@",str5);
NSLog(@"str6=%@",str6);

NSString字符串的定义

    因为NSString是对象类型,所以在定义的时候要使用 NSString *name 方式,而值需要使用 @+value方式,如@"NSString中文";

    也可以使用stringWithFormat全局方法,stringWithUTF8String,stringByAppendingString,stringByAppendingFormat等方法来定义,看到Format我们可以想到.NET中的Format()方法,用于格式化字符串。以上几个方法具体效果如下:

-- ::13.247 ObjectC10[:] str1=令狐聪
-- ::13.249 ObjectC10[:] str2=名称: 令狐聪 性别: 年龄:
-- ::13.251 ObjectC10[:] str3=我的姓名是 令狐聪
-- ::13.252 ObjectC10[:] str4=我是任盈盈
-- ::13.252 ObjectC10[:] str5=我是任盈盈我的姓名是 令狐聪
-- ::13.253 ObjectC10[:] str6=我是任盈盈 笑傲江湖abc

  2.遍历字符串中的字符

    使用- (NSUInteger)length; 方法可以获得字符串的长度,这里要注意中文和英文的问题,在C中char表示一个字节,而一个中文字符占用两个字节位。

可以获得。

int count=[str6 length];
NSLog(@"字符串长度:%d",count);
for(int i=;i<count;i++){
NSString *abc=[str6 substringWithRange:NSMakeRange(i,)];
NSLog(@"%@",abc);
} for(int i=;i<count;i++){
unichar c=[str6 characterAtIndex:i];
NSLog(@"中文情况=%c",c);
} for(int i=;i<count;i++){
unichar c=[str6 characterAtIndex:i];
NSLog(@"中文情况=%C",c);
}

遍历字符串字符

    第一种方式NSString *abc=[str6 substringWithRange:NSMakeRange(i,1)];

    第二种方式unichar c=[str6 characterAtIndex:i];

    这种需要注意中文的问题,第二种方式出现中文%c输出则为乱码,必须使用%C才能正确的输出中文。效果如下

-- ::13.253 ObjectC10[:] 字符串长度:
-- ::13.253 ObjectC10[:] 我
-- ::13.254 ObjectC10[:] 是
-- ::13.254 ObjectC10[:] 任
-- ::13.255 ObjectC10[:] 盈
-- ::13.255 ObjectC10[:] 盈
-- ::13.255 ObjectC10[:]
-- ::13.256 ObjectC10[:] 笑
-- ::13.256 ObjectC10[:] 傲
-- ::13.257 ObjectC10[:] 江
-- ::13.257 ObjectC10[:] 湖
-- ::13.258 ObjectC10[:] a
-- ::13.258 ObjectC10[:] b
-- ::13.258 ObjectC10[:] c
-- ::13.259 ObjectC10[:] 中文情况=
-- ::13.259 ObjectC10[:] 中文情况=/
-- ::13.260 ObjectC10[:] 中文情况=û
-- ::13.260 ObjectC10[:] 中文情况=È
-- ::13.261 ObjectC10[:] 中文情况=È
-- ::13.261 ObjectC10[:] 中文情况=
-- ::13.261 ObjectC10[:] 中文情况=
-- ::13.262 ObjectC10[:] 中文情况=²
-- ::13.262 ObjectC10[:] 中文情况=_
-- ::13.263 ObjectC10[:] 中文情况=V
-- ::13.263 ObjectC10[:] 中文情况=a
-- ::13.264 ObjectC10[:] 中文情况=b
-- ::13.264 ObjectC10[:] 中文情况=c
-- ::13.265 ObjectC10[:] 中文情况=我
-- ::13.265 ObjectC10[:] 中文情况=是
-- ::13.266 ObjectC10[:] 中文情况=任
-- ::13.266 ObjectC10[:] 中文情况=盈
-- ::13.266 ObjectC10[:] 中文情况=盈
-- ::13.267 ObjectC10[:] 中文情况=
-- ::13.267 ObjectC10[:] 中文情况=笑
-- ::13.268 ObjectC10[:] 中文情况=傲
-- ::13.268 ObjectC10[:] 中文情况=江
-- ::13.269 ObjectC10[:] 中文情况=湖
-- ::13.269 ObjectC10[:] 中文情况=a
-- ::13.269 ObjectC10[:] 中文情况=b
-- ::13.270 ObjectC10[:] 中文情况=c

遍历字符串效果

  

  3. 字符串比较

    Object C中字符串的比较使用isEqualToString

//比较字符串
NSString *str1=[[NSString alloc] init];
str1=@"Object C第一课"; NSString *str2=[[NSString alloc] initWithString:@"Object C第一课"]; BOOL flag=[str1 isEqualToString:str2];
if(flag){
NSLog(@"%@",@"字符串相等");
}

字符串比较

  4. compare方法

    compare方法也用于比较,但是会返回三个值:

    NSOrderedSame: 判断两者类容是否完全一样

    NSOrderedAscending: 判断两者大小,前者小于后者的时候为真

    NSOrderedDescending:判断两者大小,前者大于后者的时候为真

NSString *str1 = @"中国-朝鲜";

        NSString *str2 = @"中国-朝鲜";

        BOOL result = [str1 compare:str2] == NSOrderedSame;
NSLog(@"result:%d",result); NSString *str3=@"abc";
NSString *str4=@"acc";
result=[str3 compare:str4]==NSOrderedAscending;
NSLog(@"result:%d",result); NSString *str5=@"adc";
NSString *str6=@"aac";
result=[str5 compare:str6]==NSOrderedDescending;
NSLog(@"result:%d",result);

compare 方法测试

Object C学习笔记7-字符串NSString之一的更多相关文章

  1. Object C学习笔记22-#define 用法

    上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...

  2. Object C学习笔记24-关键字总结

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  3. Object C学习笔记17-动态判断和选择器

    当时学习Object C的时被人鄙视了一顿,说使用.NET的思想来学Object C就是狗屎:不过也挺感谢这位仁兄的,这让我学习的时候更加的谨慎.今天的学习笔记主要记录Object C中的动态类型相关 ...

  4. Object C学习笔记10-静态方法和静态属性

    在.NET中我们静态使用的关键字static有着举足轻重的作用,static 方法可以不用实例化类实例就可以直接调用,static 属性也是如此.在Object C中也存在static关键字,今天的学 ...

  5. Object C学习笔记24-关键字总结(转)

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  6. Object C学习笔记21-typedef用法

    在上一章的学习过程中遇到了一个关键字typedef,这个关键字是C语言中的关键字,因为Object C是C的扩展同样也是支持typedef的. 一. 基本作用 typedef是C中的关键字,它的主要作 ...

  7. Object C学习笔记18-SEL,@ selector,Class,@class

    本章是对上一章<<Object C学习笔记17-动态判断和选择器>>的一点补充,所以比较简单点. 一. SEL 类型 在上一篇介绍了几个方法,都只是介绍了其使用方式但是没有具体 ...

  8. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  9. 【学习笔记】字符串—马拉车(Manacher)

    [学习笔记]字符串-马拉车(Manacher) 一:[前言] 马拉车用于求解连续回文子串问题,效率极高. 其核心思想与 \(kmp\) 类似:继承. --引自 \(yyx\) 学姐 二:[算法原理] ...

  10. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

随机推荐

  1. MacOS(苹果电脑&苹果系统)连接京瓷300i 打印机

    前往京瓷官网下载打印机驱动: http://www.kyoceradocumentsolutions.com.cn/support/mfp/download/taskalfa300i.html 驱动安 ...

  2. C++暑期学习笔记

    # C++初步学习笔记 一.命名空间(namespace)相关 1 个人理解: 为了避免整合资源中存在的重名矛盾而采取的区别资源的措施: 2 命名空间的定义: 比如要定义一个命名空间A: namesp ...

  3. 第二次作业 APP分析

    第一部分 调研, 评测 1.下载软件并使用. 今天我要分析的软件app是UC浏览器这个软件,UC浏览器的用户群体还是挺多的,作为一款主流之一的浏览器APP,整体的用户体验还是很好的.简洁的界面还有中间 ...

  4. 如何使用Jfreechart生成柱状图?

    JFreeChart是JAVA平台上的一个开放的图表绘制类库. 首先 (http://www.jfree.org /jfreechart) 总这个网址下载所需要的库,然后解压,放在某个地方. 我们默认 ...

  5. UE4中的AI行为树简单介绍

    UE4引擎中可以实现简单AI的方式有很多,行为树是其中比较常用也很实用的AI控制方式,在官网的学习文档中也有最简单的目标跟踪AI操作教程,笔者在这里只作简单介绍. AIController->和 ...

  6. redis 使用案例

    1.使用redis消息列队发布信息 在一些用户创造用户的应用中(如SNS,微博),可能出现1秒有上千万个用户同时发布消息的情况,此时如果使用mysql可能出现‘too many connections ...

  7. Parameter server(参数服务器)

    特殊点在于参数服务器是节点存储参数的地方. 用于配置参数, 全局共享参数. 参数服务器使用互联网传输, 在节点管理器中运行, 实现整个通信过程. 1.命令行维护 load&&dump文 ...

  8. for var let闭包理解

    let. var. setTimeout,一点思考. for(var i = 0; i < 10; i++){ setTimeout(function(){ console.log(i); }, ...

  9. (转)Python学习笔记系列——Python是一种纯粹的语言

    此文出自知乎灵剑,原文传送门:https://zhuanlan.zhihu.com/p/23926957. 在摸索适合自己的语言学习方法,看到一篇好文章,转之,侵删. Python的语法范式相当多.知 ...

  10. P2280 [HNOI2003]激光炸弹

    题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi . 输出格式: 输出文件名为out ...