博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C中的字符串比较
阅读量:6280 次
发布时间:2019-06-22

本文共 1106 字,大约阅读时间需要 3 分钟。

hot3.png

Objective-C中,NSString的==操作符比较的是字符串地址,不是字符串内容,如果需要比较内容则需要使用isEqualToString:方法。具体的介绍可以看这里: 但是Xcode会对部分字符串做优化,相同的字符串会使用同一份拷贝,所以有时候也会出现意想不到的“正确”结果,比如:

 

1

2

3

4

5

6

7

8

NSString *str1 = @"Homebrew";

NSString *str2 = @"Homebrew";

 

// This compares the addresses of the string

if (str1 == str2)

  NSLog (@"str1 equals str2");

else

  NSLog (@"str1 does not equal str2");

这段代码会打印出 str1 equals str2,但是这样就不会:

 

1

2

3

4

5

6

7

8

9

10

// Create a C string

char *cStr = "Homebrew";

NSString *str3 = [NSString stringWithUTF8String:cStr];

NSString *str4 = @"Homebrew";

 

// Wrong - this compares the address of the string

if (str3 == str4)

  NSLog (@"str3 equals str4");

else

  NSLog (@"str3 does not equal str4");

 

另外,正确的字符串内容比较方法为:

 

1

2

3

4

5

6

7

8

char *cStr = "Homebrew";

NSString *str3 = [NSString stringWithUTF8String:cStr];

NSString *str4 = @"Homebrew";

 

if ([str3 isEqualToString:str4])

  NSLog (@"str3 equals str4");

else

  NSLog (@"str3 does not equal str4");

来源:http://all-ipad.net/string-compare-in-objective-c/?utm_source=rss&utm_medium=rss&utm_campaign=string-compare-in-objective-c

转载于:https://my.oschina.net/u/583655/blog/371137

你可能感兴趣的文章
Java (for循环综合应用)
查看>>
NodeJs——(10)REST风格的路由规则
查看>>
软件可扩展性:来自星巴克的经验
查看>>
Java Cache系列之Guava Cache实现详解
查看>>
深入Log4J源码之LoggerRepository和Configurator
查看>>
System V 消息队列—复用消息
查看>>
vi常用快捷键
查看>>
Code Jam 2010 Round 1A Problem A
查看>>
C语言柔性数组
查看>>
iOS学习之flappyBird游戏的实现
查看>>
Cocos2D v2.0至v3.x简洁转换指南(五)
查看>>
springMVC4(8)模型数据绑定全面分析
查看>>
设计模式 - 适配器
查看>>
CSS之可折叠导航
查看>>
淘宝美工设计师细说何为天猫透明背景
查看>>
【B/S学习总结】我的第100篇CSDN博客
查看>>
[Hadoop]chukwa与ganglia的区别
查看>>
数据挖掘工具分析北京房价 (一) 数据爬取采集
查看>>
IOS项目之弹出动画终结篇
查看>>
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
查看>>