当前位置: 首页 > news >正文

ios比较字符串判断为空_iOS-判断字符串为空你以为这么简单吗?

前言:

判断字符串为空:看似简单的问题,有人会说不就使用[string isEqualToString:@""]或者更简单的string.text == nil就行了嘛。但是并没有考虑到其中存在的一些问题,例如当字符串中存在空格或者换行时或者当请求后台数据时得到的是进行JSON解析的时候, 如果解析出的NSDictionary中某个key对应的value为空, 则系统会把它处理为NSNull类的单例对象。这些情况下,上面的判断方法就不会起到作用。

具体实现:

+  (BOOL)isBlankString:(NSString *)aStr {

if (!aStr) {

return YES;

}

if ([aStr isKindOfClass:[NSNull class]]) {

return YES;

}

NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];

NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];

if (!trimmedStr.length) {

return YES;

}

return NO;

}

具体解释:

代码中包含了NSString为空的三种情况:

1.NSString对象没有初始值。

if (!aStr) {

return YES;

}

2.期望得到一个NSString字符串, 但却不幸遇到了NSNull。

if ([aStr isKindOfClass:[NSNull class]]) {

return YES;

}

3.字符串中除了空格和换行, 不包含任何其他字符。

对于这种情况, 可以借助字符集类NSCharacterSet和NSString类的一个方法来做判断, 具体代码如下:

// 创建一个字符集对象, 包含所有的空格和换行字符

NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];

// 从字符串中过滤掉首尾的空格和换行, 得到一个新的字符串

NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];

// 判断新字符串的长度是否为0

if (!trimmedStr.length) {

// 字符串为空

}

相关文章:

  • 可笑的UMLed
  • dct变换可以用什么方法代替_DCT变换
  • python 数据框按行拼接_python-从其他数据框按行查找
  • Oracle最差实践(一)
  • ln函数怎么看奇偶性_【小白必看】python函数是什么?python函数的定义? python函数怎么使用?...
  • vaspkit使用_vaspkit.014安装使用说明
  • Asp.Net IIS 管理类(全)
  • html包含头尾文件_HTML文件的结构包括头部(Head)、主体(Body)两大部分
  • SSIS学习之SSIS介绍
  • php关键词分词搜索 最多匹配的排在最前面_梧州抽余油百度搜索推广怎么做?...
  • 批处理命令大全
  • flutter图标按钮_【Flutter 1-17】Flutter手把手教程UI控件——【多图预警】按钮详解...
  • acl在内核里的位置_Linux2.6内核 ACL 机制数据结构和实现分析
  • WebService与共享COOKIE
  • score函数 机器学习_深度研究:回归模型评价指标R2_score
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • angular学习第一篇-----环境搭建
  • Asm.js的简单介绍
  • echarts的各种常用效果展示
  • Electron入门介绍
  • Intervention/image 图片处理扩展包的安装和使用
  • js 实现textarea输入字数提示
  • js对象的深浅拷贝
  • magento2项目上线注意事项
  • nginx 配置多 域名 + 多 https
  • node-glob通配符
  • python学习笔记-类对象的信息
  • 多线程 start 和 run 方法到底有什么区别?
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 简析gRPC client 连接管理
  • 前端工程化(Gulp、Webpack)-webpack
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何使用 JavaScript 解析 URL
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 系统认识JavaScript正则表达式
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #etcd#安装时出错
  • #QT(一种朴素的计算器实现方法)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4) PIVOT 和 UPIVOT 的使用
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (万字长文)Spring的核心知识尽揽其中
  • (五)c52学习之旅-静态数码管
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)shell调试方法
  • ***测试-HTTP方法
  • .NET Framework .NET Core与 .NET 的区别
  • .net 流——流的类型体系简单介绍
  • .net 无限分类