在Swift 5中从原始文本创建字符串

栏目: Swift · 发布时间: 5年前

内容简介:从原始文本创建Swift字符串通常很痛苦。正确删除原始文本中的任何引号或反斜杠字符是一种令人沮丧的练习。随Xcode 10.2一起发布的Swift 5引入了一种新的语法,使其更容易使用原始文本。从文本文本创建字符串时,使用双引号(在Swift 5中,

从原始文本创建Swift字符串通常很痛苦。正确删除原始文本中的任何引号或反斜杠字符是一种令人沮丧的练习。随Xcode 10.2一起发布的Swift 5引入了一种新的语法,使其更容易使用原始文本。

使用字符串文字创建字符串

从文本文本创建字符串时,使用双引号( " )作为起始和结束分隔符,使用反斜杠( \ )来转义特殊字符。例如,要创建一个保留此文本中双引号的String:

let title1 = "Insert \"title\" here"
// Insert "title" here

复制代码

自定义字符串转义(Swift 5)

在Swift 5中, SE-0200 允许您自定义分隔符和转义序列。在处理可能包含分隔符或转义序列的原始文本时,这非常有用。

您可以使用一个或多个“ # ”字符填充开始,结束和转义分隔符。这三个例子都产生了相同的结果:

let title2 = #"Insert "title" here"#
let title3 = ##"Insert "title" here"##
let title4 = ###"Insert "title" here"###
// Insert "title" here

复制代码

请注意,我们现在不需要转义双引号,因为它们不再是分隔符。如果我们的原始文本包含我们选择的分隔符,我们可以使用额外的“ # ” 填充:

// raw text is "#Hello#"
// start delimiter is ##"
// end delimiter is "##
let regex1 = ##""#Hello#""##
// "#Hello#"

复制代码

如果我们用一个或多个分隔符填充分隔符 # ,我们还需要填充反斜杠转义序列。例如,在插值时:

let name = "Tom"
let greeting1 = "Hello \(name)"    // Hello Tom

复制代码

当使用单个填充时, # 转义序列变为 \#

let greeting2 = #"Hello \#(name)"# // Hello Tom

复制代码

当我们想要保留转义的原始文本时,自定义分隔符会很有用。例如,从某些JSON创建String时。使用多行字符串文字似乎是一个很好的方法:

let json1 = """
{
  "colors": ["red","green","blue"],
  "label": "Insert \"title\" here"
}
"""

复制代码

当文本包含引号时,多行字符串文字很方便,但在这种情况下会引入错误。问题是编译器剥离了反斜杠, "title" 导致一些无效的JSON:

{
  "colors": ["red","green","blue"],
  "label": "Insert "title" here"
}

复制代码

如果我们使用带有多行字符串文字的自定义分隔符,我们可以在原始文本中保留转义序列:

let json2 = #"""
{
  "colors": ["red","green","blue"],
  "label": "Insert \"title\" here"
}
"""#

复制代码

生成的String带有保留的原始文本(请注意 标题 周围的反斜杠转义双引号):

{
  "colors": ["red","green","blue"],
  "label": "Insert \"title\" here"
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mastering Regular Expressions, Second Edition

Mastering Regular Expressions, Second Edition

Jeffrey E F Friedl / O'Reilly Media / 2002-07-15 / USD 39.95

Regular expressions are an extremely powerful tool for manipulating text and data. They have spread like wildfire in recent years, now offered as standard features in Perl, Java, VB.NET and C# (and an......一起来看看 《Mastering Regular Expressions, Second Edition》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试