前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS CharacterSet(字符集)简单理解

iOS CharacterSet(字符集)简单理解

作者头像
星宇大前端
发布2019-03-29 16:02:29
2.2K0
发布2019-03-29 16:02:29
举报
文章被收录于专栏:大宇笔记大宇笔记

通常我们在一些场景下会用到一个字符串是否包含某种特定字符,比如判断密码是否只包含数字,检查url是否有不规范字符,删除多余空格等操作

CharacterSet简单描述


CharacterSet是在Foundation框架下的一个结构体,用于搜索操作的一组Unicode字符值。

概述 字符集表示一组符合unicode的字符。基础类型使用字符集将字符组合在一起进行搜索操作,以便在搜索期间可以找到任何特定的字符集。 这种类型提供了“写时复制”的行为,并且还连接到Objective-C NSCharacterSet类。

自己的话总结,就是将unicode字符,按组分类,便于搜索查找,验证字符串。 下面是简单分组总结:

属性

描述

CharacterSet.alphanumerics

字母和数字的组合,包含大小写, 不包含小数点

CharacterSet.capitalizedLetters

字母,首字母大写,Lt类别

CharacterSet.decimalDigits

0-9的数字,也不包含小数点

CharacterSet.whitespaces

空格

CharacterSet.whitespacesAndNewlines

空格和换行

CharacterSet.letters

所有英文字母,包含大小写 65-90 97-122

CharacterSet.lowercaseLetters

小写英文字母 97-122

CharacterSet.uppercaseLetters

大写英文字母 65-90

CharacterSet.nonBaseCharacters

非基础字符 M*

CharacterSet.illegalCharacters

不合规字符,没有在Unicode 3.2 标准中定义的字符

CharacterSet.punctuationCharacters

标点符号,连接线,引号什么的 P*

CharacterSet.symbols

符号,包含S* 所有内容,运算符,货币符号什么的

CharacterSet.newlines

返回一个包含换行符的字符集,U+000A ~ U+000D, U+0085, U+2028, and U+2029

CharacterSet.symbols

符号,包含S* 所有内容,运算符,货币符号什么的

inverted

相反的字符集。例如CharacterSet.whitespaces.inverted 就是没有空格

详细API见官方API

应用例子


1.自定义trim函数,去除首位空格(或者特定字符)

 //去掉首尾空格
    public func trim() -> String{
        return self.trimmingCharacters(in: CharacterSet.whitespaces)
    }

2.验证密码强度,该例子验证是否只包含数字

 // this obviously won't be
    if username.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) != nil {
            return .just(.failed(message: "Username can only contain numbers or digits"))
        }    

3.URL编码

 // url进行编码
     func urlValidate(hostUrl:String) -> URL{
        let url = URL(string: hostUrl.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed) ?? "")
        return url
    }  
URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}

URLHostAllowedCharacterSet      "#%/<>?@\^`{|}

URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}

URLQueryAllowedCharacterSet     "#%<>[\]^`{|}

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}

总结


总体来说这个结构体看一篇对于字符集的分类还是挺有帮助,一些问题可以使用系统字符集,可以避免来写正则。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CharacterSet简单描述
  • 应用例子
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档