美文网首页Swift基础
Swift中如何判断字符是否为空串

Swift中如何判断字符是否为空串

作者: 喔牛慢慢爬 | 来源:发表于2021-09-24 14:00 被阅读0次
一、前言

开发的过程中经常要判断字符串是否为空,包括包含多个空格的字符串,如" ",这个字符串在程序中也要判别为空串。那么如何判断字符串为空呢

二、系统提供的方法

可以用系统原生的方法判断

  • 通过字符串自带的属性isEmpty判断是否为空:

    A Boolean value indicating whether a string has no characters

var text = "hello!"
//如果有字符返回false,如果没有字符返回true.但是如果字符串是空格或换行符,则认为存在字符返回false
text.isEmpty 
  • 通过获取字符串的字符数count判断是否为空:
var text = "hello!"
//如果字符数大于0,则认为字符串不为空,如果字符数等于0,则认为字符串为空。但是如果字符串是空格或换行符,则 count会大于0,字符串不为空
text.count == 0 

可见以上两种方法无法处理text = " "text = "\n"这些形式的字符串,也就是说Swift认为" "不是空字串!

所以我们可以通过对String进行扩展其属性来实现,看下边。

三、对String的扩展方法

先来个测试代码

class ViewController: UIViewController {
    //text的值可以修改为:"","  "," 哈哈","\n"进行测试
    var text = "哈哈"
    override func viewDidLoad() {
        super.viewDidLoad()
        print("isEmpty:\(text.isEmpty)")
        print("count:\(text.count == 0)")
        print("isBlank:\(text.isBlank)")
        print("isReBlank:\(text.isReBlank)")
    }
}
extension String{
    /// 通过高阶函数allSatisfy,判断字符串是否为空串
    var isBlank:Bool{
        /// 字符串中的所有字符都符合block中的条件,则返回true
        let _blank = self.allSatisfy{
            let _blank = $0.isWhitespace
            print("字符:\($0) \(_blank)")
            return _blank
        }
        return _blank
    }
    ///通过裁剪字符串中的空格和换行符,将得到的结过进行isEmpty
    var isReBlank:Bool{
        let str = self.trimmingCharacters(in: .whitespacesAndNewlines)
        return str.isEmpty
    }
}

  • 使用allSatisfy和isWhitespace进行扩展:

    1. allSatisfy是swift中提供的阶函数,表示所有元素是否满足符合设定的条件,并返回bool值。

    2. isWhitespace是Character的一个属性,用户判定字符是否是空。

    A Boolean value indicating whether this character represents whitespace, including newlines.

    For example, the following characters all represent whitespace:

    //以下字符均表示空白

    "\t" (U+0009 CHARACTER TABULATION)

    " " (U+0020 SPACE)

    U+2029 PARAGRAPH SEPARATOR

    U+3000 IDEOGRAPHIC SPACE

    1. 代码思想:

    通过allSatisfy遍历字符串中的每个字符,将每个字符做isWhitespace判断,如果发现有一个字符返回false,则结束遍历,扩展属性返回当前字符串不为空字符串的判定。

    /// 通过高阶函数allSatisfy,判断字符串是否为空串
        var isBlank:Bool{
            /// 字符串中的所有字符都符合block中的条件,则返回true
            let _blank = self.allSatisfy{
                let _blank = $0.isWhitespace
                print("字符:\($0) \(_blank)")
                return _blank
            }
            return _blank
        }
    

    eg. 如果text = " ",text.isBlank的结果为true

  • 使用trimmingCharacters进行扩展:

    1. trimmingCharacters:修剪字符

      用于截取字符串,根据CharacterSet的配置处理截取字符串,这里用到了whitespacesAndNewlines,表示将字符串中的空格和换行符去除。

    2. characterSet:字符集

      字符集,也就是一堆字符的集合,就是说把我们平常见到的单个字符按照一定的条件进行了分类

      例如

      CharacterSet.whitespacesAndNewlines--空格和换行符
      CharacterSet.letters--所有英文字母的集合
      
    3. 代码思想:

      将需要校验的字符串中的空格或换行符删除,获得新的字符串,再片段新字符串的isEmpty是否为空,进而校验完成原始字符串

        ///通过裁剪字符串中的空格和换行符,将得到的结过进行isEmpty
          var isReBlank:Bool{
              let str = self.trimmingCharacters(in: .whitespacesAndNewlines)
              return str.isEmpty
          }
      

      eg. 如果text = " ",经过trimmingCharacters处理后变为text = "",再调用isEmpty,判定字符串为空

相关文章

  • Swift中如何判断字符是否为空串

    一、前言 开发的过程中经常要判断字符串是否为空,包括包含多个空格的字符串,如" ",这个字符串在程序中也要判别为空...

  • 判断字符串是否为空串

    一般常用于服务器返回的数据,判断该字段是否为空串,而后进行剩余操作。 宏定义的,方便使用

  • Swift学习笔记-String

    在Swift中,String由字符构成,而字符由一个或多个Unicode标量构成 遍历字符串字符 判断字符串是否为...

  • iOS判断字符串是否为空

    -(BOOL)isNull:(id)object { // 判断是否为空串 if ([object isEqual...

  • ios中空字符判断

    pragma mark 判断是否为空串 -(BOOL)isNull:(id)object{if ([object ...

  • 字符串

    数组与字符串转换Swift 字符串转数组: Swift 数组转字符串: 1.反转字符串 2.判断字符串是否为空 3...

  • 在Swift中创建和初始化字符串

    初始化空串 字面量 初始化器语法 isEmpty检查是否为空串 字符串字面量 字符串字面量是被双引号(")包裹的固...

  • Swift中的字符串和字符

    1. 初始化空字符串 判断字符串是否为空: 2. 字符串是值类型 Swift中的String类型是值类型。如果你创...

  • 字符串

    说明空串是任意字符串的子串 串中任意个数的连续字符组成的子序列称为该串的子串 不区分大小写判断字符串是否含有子串 ...

  • OC中常用的String类别

    获取Url中参数对应的value 判断字符串中是否有中文 判断是否为QQ号 判断是否为手机号 是否是数字 是否是身...

网友评论

    本文标题:Swift中如何判断字符是否为空串

    本文链接:https://www.haomeiwen.com/subject/ehrzgltx.html