内容简介: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 发布线路图:有哪些值得期待的新特性?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
Base64 编码/解码
Base64 编码/解码