内容简介:Swift 5.0 对字符串声明增加了一个强有力的新特性,使用传统的方式我们使用双引号包裹来声明字符串,如果有参数则只用5.0 中增加的解决方案是引入一个新的字符
Swift 5.0 对字符串声明增加了一个强有力的新特性,使用 #
包裹字符串。
原有方式的不足
传统的方式我们使用双引号包裹来声明字符串,如果有参数则只用 \(参数)
表示。由此引发的问题是如果字符串中包含 \ ”
则需要进行转义,否则格式识别会有冲突:
let qutoedString = "如果句子里面有\"双引号\"就很尴尬" // 输出: 如果句子里面有"双引号"就很尴尬 let escapeString = "如果句子里面有\\转义符号反斜杆\\也很尴尬" // 输出: 果句子里面有\转义符号反斜杆\也很尴尬 复制代码
解决方案
5.0 中增加的解决方案是引入一个新的字符 #
声明字符串:
let newQutoedString = #"如果句子里面有"双引号"就很尴尬"# // 输出: 如果句子里面有"双引号"就很尴尬 let newEscapeString = #"如果句子里面有\转义符号反斜杆\也很尴尬"# // 输出: 果句子里面有\转义符号反斜杆\也很尴尬 复制代码
如果字符串声明被 #
号包裹,字符串中的 \ ”
不再需要转义了。
相对的字符串中的参数占位符也要修改为 \#(参数)
:
let escapeCharacter = #"\"# let newParamString = #"如果句子里面有\#(escapeCharacter)转义符号反斜杆\#(escapeCharacter)也很尴尬"# 复制代码
多行文本
在 4.0 中引入了 """
表示多行的文本,新的方法也兼容多行文本。方式和前面类似,在 """
前增加 #
即可:
let multiLineText = #""" "\" 一切正常 """# 复制代码
新的问题
使用井号表示的字符串结尾的字符是 "#
,如果句子中出现了 "#
则不可避免引起歧义,所以需要一种新的方式转义。区别于传统的在需要转义的字符前加反斜杆的方式,Swift 中采用的是在将首尾的 #
替换为 ##
:
let escapeHashCharacter = ##"如果刚好有个字符 "# 呵呵和结束符意义就尴尬了"## 复制代码
总结
如果你刚好需要声明一个正则表达式,使用新的方案会优雅、直观很多:
let regex1 = "\\\\[A-Z]+[A-Za-z]+\\.[a-z]+" let regex2 = #"\\[A-Z]+[A-Za-z]+\.[a-z]+"# 复制代码
参考链接:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Node 12 值得关注的新特性
- Node12有哪些值得关注的新特性?
- Node.js 12 值得关注的新特性
- 【译】2017年值得学习的 3 个 CSS 新特性
- Swift 5.0 值得关注的特性:增加 Result 枚举类型
- Java 11 发布线路图:有哪些值得期待的新特性?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
像计算机科学家一样思考Python
(美)Allen B.Downey / 赵普明 / 人民邮电出版社 / 2013-8 / 49
《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。《像计算机科学家一样思考python》并不是一本介绍语言的书,而是一本介绍编程思想的书。和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来......一起来看看 《像计算机科学家一样思考Python》 这本书的介绍吧!
在线进制转换器
各进制数互转换器
HEX HSV 转换工具
HEX HSV 互换工具