前几天写了一篇关于iOS中正则表达式的使用笔记,正则表达式在一堆不规则的文本中匹配出想要的内容时功能强大。但很多时候我们只需要获取一个bool值,比如判断是字符串是否是合法的email,是否是合法的手机号码,是否是合法的URL等,此时正则显得过于臃肿而且效率低下。这个时候谓词(NSPredicate)就能派上大用场了。

什么是谓词,以下是官方定义:

The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-mem[……]

继续阅读

定义:

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配或替换一系列匹配某个句法规则的字符串。

使用步骤:

1.定义正则表达式规则
2.通过规则,创建正则表达式对象
3.利用正则表达式对象匹配字符串

语法介绍

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

构造正则表达式的方法和创建数学表达式的方法一样。[……]

继续阅读

最近公司总算度过低潮期,算是否极泰来吧,在业务衔接的空隙拜读了东野大叔的《解忧杂货店》,书不很长,由5个小故事连接成一个完整的故事。一晚上时光机的设定让我很快沉迷于书中的世界,环环相扣的故事,不同人不同的人生和烦恼,读后很受启发。先来整理一下故事的时间线和故事线,以及一个大胆的猜测:
时间线
高清图点击此处下载

看完了整体的时间线好故事线,在来分析一下故事想要带个我们哪些思考?

关于梦想:
书中奥运女孩静子,在面对人生的困境,教练男友绝症,自己想要坚持参加奥运会,但又想陪在男友身边照顾男友。此时,在她内心中出现的是爱情和梦想的抉择,所以她将困境告诉了解忧杂货店,其实在她内心深处是有[……]

继续阅读

我们在使用标准的JSON或者XML时可以非常容易的进行解析并获取到想要的数据,但是在对一些不那么规则或自定义的字符串进行处理时,就显得比较麻烦了,幸好iOS提供了Scanner类和对正则表达式的支持(后续在写)。Scanner类是一个类簇的抽象父类,该类簇为一个从NSString(虽然Swift中大多使用String,但这个类还保留着NSString)对象扫描值的对象提供了程序接口。

先来查看Scanner的定义:
[cc lang=”Swift”]
open class Scanner : NSObject, NSCopying {
open var string: St[……]

继续阅读

iOS中要进行文本操作,如截取,trim等,CharacterSet是很重要的一个环节。iOS中用CharacterSet来表示一组Unicode的集合,它经常和Scanner,NSPredicate配合使用。

这里是SDK提供的常用CharacterSet
[cc lang=”Swift”]

CharacterSet.alphanumerics // 字母和数字的组合,包含大小写, 不包含小数点

CharacterSet.decimalDigits // 0-9的数字,也不包含小数点

CharacterSet.controlCharacters // ASCII 码[……]

继续阅读

完整的请求报文包含3部分:起始行,header,body. body可以为空,如下所示

[cc lang=”HTML”]
GET /wp-admin/post.php?post=432&action=edit HTTP/1.1 // 起始行,包含请求路径,http版本等信息,以空格分割,CRLF结尾
// 以下为header内容
Host www.cxylg.com // 请求的host
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWe[……]

继续阅读

通用header

通用header指客户端和服务端都可以使用的header 例如日期header,数据类型header等

1
2
Date: Tue, 3 Oct 1974 02:16:00 GMT
MIME-Version1.0

请求header
请求header指只在请求报文中有效的header,例如Host,From等,Range 详参
[cc lang=”HTML”]
Host: d19hf05jf0kxo4.cloudfront.net
From: gjhlovelh@vip.qq.com
Range: byte[……]

继续阅读

最近工作中遇到很多字符串截取相关的内容,但Swift中字符串的截取开始时用着总是不如OC顺手,最近终于弄明白String.Index的用法,总结一下

开始索引和结束索引 startIndex and endIndex

[cc lang=”Swift”]
var str = “Hello, playground”

str.characters.count // 17

// startIndex 为字符串第一个字符的索引
let startIndex = str.startIndex // 0

// endIndex 为最后一个字符后面一个索引,这里跟[……]

继续阅读

http version 在satar line中标记 格式为HTTP/x.y
此处x和y是两个数字分别比较的,例如HTTP/2.3的版本号小于HTTP/2.22,因为3小于22

100 到 199 之间的状态码表示信息性状态码。
200 到 299 之间的状态码表示成功。
300 到 399 之间的状态码表示资源已经被移走了。
400 到 499 之间的状态码表示客户端的请求出错了。
500 到 599 之间的状态码表示服务器出错了。

整体范围   已定义范围   分  类 
100~199   100~101   信息提示 
200~299   200~206[……]

继续阅读

名词解释

安全性:客户端可以发起请求,并知道它不会改变资源的状态。
幂等性:保证客户端重复发起某个请求的效果与一次请求的效果一致。

方法名
安全性
幂等性
请求状态
响应状态
用途

GET
true
true
 只有header,没有body
对应请求URI的资源表述,通常带有body。响应header中的Content-Type,Content-Length,Content-Language,Last-Modified,ETag等应该和响应body的表述一致。
通常用于请求服务器发送某个资源。例如获取URI对应的html,文件等。[……]

继续阅读