没关注?伸出手指点这里---
本文介绍 Julia 中的 字符串 操作。
内容摘抄自 Think julia 书籍。
单个引号引起的单个字符:
julia> 'x'
'x': ASCII/Unicode U+0078 (category Ll: Letter, lowercase)
julia> '🍌'
'🍌': Unicode U+01f34c (category So: Symbol, other)
julia> typeof('x')
Char
双引号引得多字符字符串,可以使用中括号以索引取值,注意 julia 中索引以 1 开始:
julia> fruit = "banana"
"banana"
julia> letter = fruit[1]
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
关键词 begin
和 end
可以取第一个和最后一个字符:
julia> fruit[end]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
中括号里可以使用表达式取值:
julia> i = 1
1
julia> fruit[i+1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
julia> fruit[end-1]
'n': ASCII/Unicode U+006e (category Ll: Letter, lowercase)
不是整型则会报错:
julia> letter = fruit[1.5]
ERROR: MethodError: no method matching getindex(::String, ::Float64)
length 函数获取字符串个数:
julia> fruits = "🍌 🍎 🍐"
"🍌 🍎 🍐"
julia> len = length(fruits)
5
获取最后一个元素:
julia> last = fruits[len]
' ': ASCII/Unicode U+0020 (category Zs: Separator, space)
但你可能得不到你想要的。字符串使用 UTF-8 编码。UTF-8 是一种可变宽度编码,这意味着不是所有字符都用相同的字节数编码。
sizeof 函数可以获取字节数:
julia> sizeof("🍌")
4
因为表情符号编码为 4 个字节,字符串索引是基于字节的,水果的第 5 个元素是 SPACE。这也意味着 UTF-8 字符串的每个字节索引不一定是字符的有效索引。如果你在这样一个无效的字节索引处对字符串进行索引,则会抛出错误:
julia> fruits[2]
ERROR: StringIndexError("🍌 🍎 🍐", 2)
在 fruits 的情况下,字符是一个四字节字符,因此索引 2、3 和 4 无效,下一个字符的索引是 5;下一个有效索引可以由 nextind(fruits, 1)计算,之后的下一个索引可以由 nextind(fruits, 5)计算,依此类推。
prefixes = "JKLMNOPQ"
suffix = "ack"
for letter in prefixes
println(letter * suffix)
end
Jack
Kack
Lack
Mack
Nack
Oack
Pack
Qack
julia> str = "Julius Caesar";
julia> str[1:6]
"Julius"
使用关键词:
julia> str[8:end]
"Caesar"
如果第二个索引大于第一个,则返回空字符串:
julia> str[8:7]
""
字符串内容不可改变,使用切片赋值则会报错:
julia> greeting = "Hello, world!"
"Hello, world!"
julia> greeting[1] = 'J'
ERROR: MethodError: no method matching setindex!(::String, ::Char, ::Int64)
Julia 中可以使用$
符号将变量插入到字符串中:
julia> greet = "Hello"
"Hello"
julia> whom = "World"
"World"
julia> "$greet, $(whom)!"
"Hello, World!"
加上括号可以识别表达式:
julia> "1 + 2 = $(1 + 2)"
"1 + 2 = 3"
uppercase 函数转换为大写, lowercase则转为小写, titlecase 将首字母转为大写:
julia> uppercase("Hello, World!")
"HELLO, WORLD!"
julia> lowercase("TEST")
test
julia> titlecase("title")
Title
findfirst 函数查找字符并返回索引:
julia> findfirst("a", "banana")
2:2
julia> findfirst("na", "banana")
3:4
可以加个寻找起始位置的索引:
julia> findnext("na", "banana", 4)
5:6
(\in TAB)
打出来,判断字符是否在指定的字符串中,返回 true 或 false:
julia> 'a' ∈ "banana" # 'a' in "banana"
true
使用 ==
可以判断两个字符串是否相等:
word = "Pineapple"
if word == "banana"
println("All right, bananas.")
end
其他关系操作对于按字母顺序排列单词也很有用:
if word < "banana"
println("Your word, $word, comes before banana.")
elseif word > "banana"
println("Your word, $word, comes after banana.")
else
println("All right, bananas.")
end
Your word, Pineapple, comes before banana.
Julia 处理大写字母和小写字母的方式与人们不同。所有的大写字母都在小写字母之前。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦,数据代码已上传至QQ群,欢迎加入下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀...