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

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

  hot3.png

 

还是对Objective-C欠熟悉,一个很简单的字符串比较,想当然的按照C++ string的方式来处理,结果debug了好半天得不到正确的结果,Google之后才想起来原来是这么回事。

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

 

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

  

NSString *str1 = @"Homebrew";NSString *str2 = @"Homebrew";// This compares the addresses of the stringif (str1 == str2)  NSLog (@"str1 equals str2");else  NSLog (@"str1 does not equal str2");

 

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

// Create a C stringchar *cStr = "Homebrew";NSString *str3 = [NSString stringWithUTF8String:cStr];NSString *str4 = @"Homebrew";// Wrong - this compares the address of the stringif (str3 == str4)  NSLog (@"str3 equals str4");else  NSLog (@"str3 does not equal str4");

 

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");

 

本文链接地址: 

转载于:https://my.oschina.net/tiwer/blog/199852

你可能感兴趣的文章
php 几个比较实用的函数
查看>>
(译)OpenGL ES2.0 – Iphone开发指引
查看>>
@RestController 与 @RequestMapping
查看>>
黑马程序员.bobo.DAY.1
查看>>
Unity shader 官网文档全方位学习(二)
查看>>
pbrun
查看>>
Java后端工程师学习大纲
查看>>
浏览器加载和渲染网页顺序
查看>>
微服务架构springcloud
查看>>
深入剖析Android系统试读样章
查看>>
测试用例出错重跑--flaky插件
查看>>
yaf的安装
查看>>
比较java与C++的不同
查看>>
Twitter Storm入门
查看>>
使用scikit-learn进行文本分类
查看>>
Ansible自动化运维配置与应用(结合实例)
查看>>
下面简要介绍软件工程的七条原理
查看>>
java POI实现excel实现表格导出
查看>>
Lua(三)——语句
查看>>
TensorFlow的基本运算01
查看>>