Julia 字符串
最后修改于 2023 年 10 月 19 日
在本文中,我们将展示如何在 Julia 中处理字符串。
在 Julia 中,字符串是字符的有限序列。它是一种数据类型,存储一系列数据值(通常是字节),其中元素根据字符编码通常代表字符。
用于字符串的内置具体类型是 String
。它通过 UTF-8 编码支持全范围的 Unicode 字符。
当字符串字面量出现在源代码中时,它被称为字符串字面量。字符串字面量由两个双引号分隔(例如,“一只旧的猎鹰”)。
Julia 中的字符串是不可变的。
Julia 字符串简单示例
以下是一个简单的 Julia 字符串示例。
word::String = "falcon" println(word) word2 = "hawk" println(word2)
我们定义两个字符串并打印它们。
word::String = "falcon" println(word)
我们显式定义 word
变量的类型。类型跟随 ::
字符。
word2 = "hawk" println(word2)
在第二种情况下,类型由 Julia 推断。
$ julia main.jl falcon hawk
Julia 字符串连接
Julia 使用 *
字符连接字符串。
println("an" * " old " * "falcon") n = 4 println("There are " * string(n) * " hawks")
在程序中,我们通过连接字符串来构建两个消息。
println("an" * " old " * "falcon")
这三个字符串使用 *
运算符连接在一起。
n = 4 println("There are " * string(n) * " hawks")
在第二种情况下,我们还有一个整数。整数通过 string
函数转换为字符串。
$ julia main.jl an old falcon There are 4 hawks
Julia 字符串转整数
int
内置函数将字符串转换为整数。
vals = ("2", 1, "4", 6, "11") a, b, c, d, e = vals sum = parse(Int16, a) + b + parse(Int16, c) + d + parse(Int16, e) println(sum)
我们有一个值的元组:整数和字符串。我们想计算所有值的总和。
a, b, c, d, e = vals
我们将元组解构为五个变量。
sum = parse(Int16, a) + b + parse(Int16, c) + d + parse(Int16, e)
我们对变量求和;字符串使用 parse
函数转换为整数。
$ julia main.jl 24
Julia 字符串重复
在下一个示例中,我们将展示如何在 Julia 中重复一个字符串。
println(repeat("falcon ", 5)) println(repeat("hawk ", 3)) println(repeat(["hawk", "falcon"], 3))
字符串可以使用 repeat
函数重复。该函数将字符串或字符串数组作为第一个参数。第二个参数是计数。
$ julia repeat.jl falcon falcon falcon falcon falcon hawk hawk hawk ["hawk", "falcon", "hawk", "falcon", "hawk", "falcon"]
Julia 字符串插值
插值字符串是可能包含插值表达式的字符串字面量。$ 特殊字符标识字符串字面量中的一个变量,该变量将被扩展为其值。表达式放在 $( )
分隔符内。
name = "John Doe" age = 34 msg = "$name is $age years old" println(msg) x = 12 y = 11 println("x + y = $(x + y)")
我们有两个插值字符串。
msg = "$name is $age years old"
我们构建一个包含两个变量 name
和 age
内容的字符串。它们前面都带有 $
字符。字符串展开后,它包含这两个变量的值。
println("x + y = $(x + y)")
插值字符串可以包含表达式。
$ julia main.jl John Doe is 34 years old x + y = 23
Julia 字符串转义序列
转义字符是执行特定操作的特殊字符。例如,\n 字符开始一个新行。
println("Three\t bottles of wine") println("He said: \"I love ice skating\"") println("Line 1:\nLine 2:\nLine 3:")
我们有一个包含转义字符的示例。
println("Three\t bottles of wine")
\t
转义字符插入一个制表符。
println("He said: \"I love ice skating\"")
我们通过用 \ 转义来在字符串字面量中插入双引号。
println("Line 1:\nLine 2:\nLine 3:")
使用 \n
,我们创建了三行。
$ julia main.jl Three bottles of wine He said: "I love ice skating" Line 1: Line 2: Line 3:
Julia 原生字符串
原生字符串不解释转义序列。它们前面带有 raw
前缀。
s1 = raw"deep \t forest" s2 = raw"C:\Users\Admin\Documents" println(s1) println(s2)
在此代码示例中,我们使用逐字字符串。
s1 = raw"deep \t forest"
\t
特殊字符未被解释;它只会被打印到控制台。
s2 = raw"C:\Users\Admin\Documents"
当我们处理路径时,原生字符串很方便。
$ julia main.jl deep \t forest C:\Users\Admin\Documents
@sprintf 宏
我们可以使用 @sprintf
宏来格式化字符串。
using Printf name = "John Doe" occupation = "gardener" msg = @sprintf("%s is a %s", name, occupation) println(msg)
该宏位于 Printf
模块中。
msg = @sprintf("%s is a %s", name, occupation) println(msg)
我们使用 @sprintf
宏构建一个消息。%s
是期望字符串值的格式说明符。
$ julia main.jl John Doe is a gardener
来源
在本文中,我们研究了 Julia 中的字符串。