var str = "Hello, playground"
字符串,Swift最基本最常用的对象之一。
Swift的基本使用,增删改查我们就不说了。
基本字面量
let hello = "Hello Swift"
print("\(hello) 欢迎你")
多行字符串
let mutilStr = """
我是多行字符串
我这里定义多行
比如json定义
"""
Swift 5.0 String的新特性
增加Raw string 原始字符串功能。原始字符串中的引号和反斜杠会被原样输出.
比如我有这样一句话:"Tom" 和 "Bob"今天来我家,"Tom"帽子上有一个#字母,"Bob"帽子上有两个##字母
\
处理
使用\
来处理,也是大多数语言处理方式,但是如果用来处理正则表达式就难看的。
var showStr = "\"Tom\" 和 \"Bob\"今天来我家,\"Tom\"帽子上有一个#,\"Bob\"帽子上有两个##"
print(showStr) //"Tom" 和 "Bob"今天来我家,"Tom"帽子上有一个#,"Bob"帽子上有两个##
#
处理
使用成对#将字符串包裹起来
var str2 = #""Tom" 和 "Bob"今天来我家,"Tom"帽子上有一个#,"Bob"帽子上有两个##"#
print(str2)//"Tom" 和 "Bob"今天来我家,"Tom"帽子上有一个#,"Bob"帽子上有两个##
如果要插入变量值了? 使用\#()
var bob = "Bob"
var str2 = #""Tom" 和 "Bob"今天来我家,"Tom"帽子上有一个#,"\#(bob)"帽子上有两个##"#
##
处理
##
会完完全全原样输出字符串。
上面#
处理有可能遇到 #" 就会成问题
比如我要显示:你好"Tom"#Bob"
如果使用#"你好"Tom"#Bob"#
就会出问题,相当于提前终止了#
所以此时就应该用##
处理
var str3 = ##"你好"Tom"#Bob"##
print(str3) //你好"Tom"#Bob
你是不是在想,为啥不直接用
##
表示原样输出安全,我也这么想的,但是发现,##
不支持里面添加变量
不信,你看
var bob = "Bob"
var str3 = ##"你好"Tom"#\#(bob)"##
print(str3) //你好"Tom"#\#(bob)
所以,结论就是:
一般情况就是用
#
,即不用考虑转义字符,也可以\#(variable)
使用变量字面值
想想用这个来定义正在表达式就爽
多行字符串
原始字符串和多行字符串完全兼容。
var bob = "Bob"
var str4 = #"""
一行
两行
\#(bob)
"""#
var str5 = ##"""
一行
两行
不可使用变量
"""##
参考:
Swift5.0新特性更新
老司机周报