字符

字符使用单引号括起来,字符是 32 位整数

julia> 'a'
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase) julia> typeof(ans)
Char julia> Int('a')
97 julia> typeof(ans)
Int64

字符对应的整数是相对应的 ASCII 码值

也可以把整数转换为相对应的字符

julia> Char(97)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)

对字符进行比较

julia> 'a' > 'C'
true

对字符进行算术运算

julia> 'a' - 'b'
-1 julia> 'a' + 1
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)

比较运算和算术运算都是根据 ASCII 码的值进行的

字符串

字符串使用双引号或三个双引号括起来

julia> a = "Hello World"
"Hello World" julia> a = """Hello World"""
"Hello World"

字符串索引

julia> a = "Hello World"
"Hello World" julia> a[1]
'H': ASCII/Unicode U+0048 (category Lu: Letter, uppercase) julia> a[end]
'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase) julia> a[end - 1]
'l': ASCII/Unicode U+006c (category Ll: Letter, lowercase)

第一个索引是 1,而不是 0

关键字 end 为最后的索引,可以对 end 进行算术运算,end - 1 为倒二个索引值

索引不能小于 1,不能大于 end,索引不能为 0 和负数

使用范围索引提取字符串

julia> a = "Hello World"
"Hello World" julia> a[2:4] # 索引 2 到 4 的字符串
"ell"

字符串的比较

julia> "hello" < "world"
true

字符串的比较是一个个字符逐个比较

字符串处理函数

使用 search() 函数查找某个字符的索引值

julia> search("Hello World", 'r')
9 julia> search("Hello World", 'q') # 如果字符串中没有该字符,结果为 0
0 julia> search("Hello World", 'r', 3) # 从索引 3 开始查找
9 julia> search("Hello World", 'e', 3)
0

repeat() 函数进行复制字符串

julia> repeat("abc", 3)  # 将字符串 abc 复制 3 次
"abcabcabc"

length() 获取字符串的长度

julia> length("hello")
5

firstindex(str) 函数获取字符串 str 第一个索引,对于字符串总是 1,其它容器就不一样了

julia> firstindex("hello")
1

lastindex(str) 函数获取字符串 str 最大的索引,就是 end

julia> lastindex("hello")
5

ncodeunits(str) 函数获取字符串 str 中的代码单元数

julia> ncodeunits("hello world")
11

codeunit(str, i) 函数获取索引为 i 的字符串 str 中的代码单元值

julia> codeunit("hello world", 2)
0x65

nextind(str, i, n=1) 函数获取字符串 str 索引为 i 之后第 n 个字符的索引

prevind(str, i, n=1) 函数获取字符串 str 索引为 i 之前第 n 个字符的索引

julia> nextind("hello world", 3, 2)
5 julia> prevind("hello world", 3, 2)
1

thisind(str, i) 函数获取字符串 str 中的索引为 i 的字符的第一个索引

如果 i 等于 0 或 ncodeunits(s)+1 返回 i,在所有其他情况下抛出 BoundsError

julia> thisind("a", 0)
0 julia> thisind("a", 1)
1 julia> thisind("a", 2)
2 julia> thisind("a", 3)
ERROR: BoundsError: attempt to access "a"
at index [3]
Stacktrace:
[1] _thisind_str(::String, ::Int64) at .\strings\string.jl:117
[2] thisind(::String, ::Int64) at .\strings\string.jl:110
[3] top-level scope at none:0

join() 函数将一个字符串数组连接成一个字符串,在相邻字符串之间插入给定的分隔符

julia> join(["hello", "world", "julia"], "+", "-")
"hello+world-julia" julia> join(["hello", "world", "julia"], "+")
"hello+world+julia"

findfirst() 函数可以搜索特定字符的索引

julia> findfirst("w", "hello world")
7:7 julia> findfirst("o", "hello world")
5:5 julia> findfirst("a", "hello world") julia> findfirst("lo", "hello world")
4:5 julia> findfirst("le", "hello world")

搜索的字符为该字符第一次出现的索引

如果字符串中没有该字符则返回空

如果搜索一串字符串,则返回索引范围

如果字符串有一个字符不在原字符串中,返回空

findnext() 函数可以带有第三个参数,并从第三个参数开始搜索给定偏移处的字符

julia> findnext("a", "hello world", 1)  # 如果字符串不在原字符串中返回空

julia> findnext("o", "hello world", 1)  # 从索引 1 开始查找第一个 o 的索引
5:5 julia> findnext("o", "hello world", 6) # 从索引 6 开始查找第一个 o 的索引
8:8

findprev(str1, str2, i) 从字符串 str2 中索引为 i 的位置开始向前匹配字符串 str2

返回值也是找到匹配序列的索引范围

julia> findprev("a", "hello world", 11)

julia> findprev("o", "hello world", 11)
8:8 julia> findprev("lo", "hello world", 11)
4:5

occursin(str1, str2) 函数查看字符串 str1 是否在字符串 str2 中,返回 Bool 值

julia> occursin("o", "hello world")
true julia> occursin("a", "hello world")
false julia> occursin("lo", "hello world")
true julia> occursin("le", "hello world")
false

reverse() 函数将字符串进行反转

julia> reverse("hello-world")
"dlrow-olleh"

replace(str, str1 => str2, [count = Integer]) 函数将字符串 str 中的字符串 str1 替换成字符串 str2,count 为替换的次数,是可选项

julia> replace("hello python", "python" => "julia")
"hello julia" julia> replace("hello python, hello python game", "python" => "julia", count = 1)
"hello julia, hello python game" julia> replace("hello pytho", "python" => "julia")
"hello pytho"

split(str, str1, [limite = Integer], [keepempty=Bool]) 函数将字符串 str 按照 str1 进行分割成数组

limit 为最多分割成的数组个数

keepempty 为是否在结果中保留空字段,默认为 true

julia> split("www.baidu.com", ".")
3-element Array{SubString{String},1}:
"www"
"baidu"
"com" julia> split("www.baidu.com", ".", limit = 1)
1-element Array{SubString{String},1}:
"www.baidu.com" julia> split("www.baidu.com", ".", limit = 2)
2-element Array{SubString{String},1}:
"www"
"baidu.com" julia> split("www.baidu.com", ".", limit = 3)
3-element Array{SubString{String},1}:
"www"
"baidu"
"com" julia> split("www.baidu.com", ".", limit = 4)
3-element Array{SubString{String},1}:
"www"
"baidu"
"com" julia> split("www.baidu..com", ".")
4-element Array{SubString{String},1}:
"www"
"baidu"
""
"com" julia> split("www.baidu..com", ".", keepempty = true)
4-element Array{SubString{String},1}:
"www"
"baidu"
""
"com" julia> split("www.baidu..com", ".", keepempty = false)
3-element Array{SubString{String},1}:
"www"
"baidu"
"com"

rsplit(str, str1, [limite = Integer], [keepempty=Bool]) 函数和 split() 函数一样,只不过是反过来进行分割的

julia> rsplit("www.baidu.com", ".")
3-element Array{SubString{String},1}:
"www"
"baidu"
"com" julia> rsplit("www.baidu.com", ".", limit = 1)
1-element Array{SubString{String},1}:
"www.baidu.com" julia> rsplit("www.baidu.com", ".", limit = 2)
2-element Array{SubString{String},1}:
"www.baidu"
"com" julia> rsplit("www.baidu.com", ".", limit = 3)
3-element Array{SubString{String},1}:
"www"
"baidu"
"com"

strip(str, [chars]) 函数默认去除字符串两边的空格,如果有 chars,则去除字符串两边的 chars

julia> strip("  hello world   ")
"hello world" julia> strip("-hello world+", '+')
"-hello world" julia> strip("-hello world+", ['-', '+'])
"hello world" julia> strip("-hello+world+", '+')
"-hello+world"

lstrip(str, [chars]) 函数去除字符串左边的空格或 chars

rstrip(str, [chars]) 函数去除字符串右边的空格或 chars

julia> lstrip("   julia    ")
"julia " julia> rstrip(" julia ")
" julia"

startswith(str1, str2) 判断字符串 str1 是否以 str2 开头,返回 Bool 值

endswith(str1, str2) 判断字符串 str1 是否以 str2 结尾,返回 Bool 值

julia> startswith("julia", "ju")
true julia> endswith("julia", "ia")
true

first(str, n) 函数获取字符串 str 前 n 个字符

julia> first("julia", 0)
"" julia> first("julia", 1)
"j" julia> first("julia", 2)
"ju" julia> first("julia", 3)
"jul" julia> first("julia", 4)
"juli"

last(str, n) 函数获取字符串 str 后 n 个字符

julia> last("julia", 0)
"" julia> last("julia", 1)
"a" julia> last("julia", 2)
"ia" julia> last("julia", 3)
"lia" julia> last("julia", 4)
"ulia"

uppercase(str) 函数将字符串 str 中的字母全转换成大写

julia> uppercase("julia")
"JULIA"

lowercase(str) 函数将字符串 str 中的字母全转换成小写

julia> lowercase("JuLiA")
"julia"

titlecase(str) 函数将字符串 str 中的字符串按照标题格式进行大小写转换

julia> titlecase("this is a julia program")
"This Is A Julia Program"

uppercasefirst(str) 函数将字符串 str 中开头的字母转换为大写

lowercasefirst(str) 函数将字符串 str 中开头的字母转换为小写

julia> uppercasefirst("hello julia")
"Hello julia" julia> lowercasefirst("HelLo julia")
"helLo julia"

chop(str, head=Integer, tail=Integer) 函数删除字符串 str 的前 head 个字符和后 tail 个字符,默认删除最后一个字符

julia> chop("julia")
"juli" julia> chop("julia", head=1)
"uli" julia> chop("julia", head=1, tail=3)
"u" julia> chop("julia", head=3, tail=3)
""

如果要删除的字符数超过字符串的长度,则会返回空

chomp(str) 函数删除换行符

julia> "julia\n"
"julia\n" julia> chomp("julia\n")
"julia"

Symbol(str1, str2, ...) 通过字符串参数连接在一起来创建符号

julia> Symbol("hello", "julia")
:hellojulia julia> Symbol("hello", "julia", "and", "python")
:hellojuliaandpython julia> Symbol("Day", 5)
:Day5

escape_string() 一般转义传统的 C 和 Unicode 转义序列,第一个表单返回转义字符串,第二个表单将结果打印到 io

反斜杠(\)使用双反斜杠(\\)进行转义,不可以打印的字符使用标准的 C 转义码转义,“\ 0”表示 NUL(如果明确),unicode 代码点(“\ u”前缀)或 hex(“\ x”前缀)

可选的 esc 参数指定任何其他字符,这些字符也应该通过前缀反斜杠进行转义,在第一个表单中默认也会转义

julia> escape_string("aaa\nbbb")
"aaa\\nbbb" julia> escape_string("\xfe\xff")
"\\xfe\\xff" julia> escape_string(string('\u2135','\0'))
"ℵ\\0" julia> escape_string(string('\u2135','\0','0'))
"ℵ\\x000"

unescape_string() 一般转义传统的 C 和 Unicode 转义序列的,第一个表单返回转义字符串,第二个表单将结果打印到 io

转义序列:

  • 转义为反斜杠(\\)
  • 转义双引号(\")
  • 标准 C 转义序列(\ a,\ b,\ t,\ n,\ v,\ f,\ r,\ e)
  • Unicode 代码点(\u 或 \U 前缀,1-4 个尾随十六进制数字)
  • 十六进制字节(\x,带有 1-2 个尾随十六进制数字)
  • 八进制字节(\具有 1-3 个尾随八进制数字)
julia> unescape_string("aaa\\nbbb")  # C 转义序列

julia> unescape_string("\\u03c0")  # unicode
"π" julia> unescape_string("\\101") # 八进制
"A"

内插

使用 string() 函数进行字符串拼接,字符串连接和内插都调用 string 函数来把对象转换为 String

julia> a = "Hello"
"Hello" julia> b = "World"
"World" julia> string(a, b)
"HelloWorld"

字符串不能用“+”进行拼接

julia> "aaa"+"bbb"
ERROR: MethodError: no method matching +(::String, ::String)
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:502
Stacktrace:
[1] top-level scope at none:0

Julia 使用 $ 内插字符串

julia> a = "Hello"
"Hello" julia> b = "World"
"World" julia> "$a $b"
"Hello World"

$ 将其后的最短的完整表达式内插进字符串

可以使用小括号通过 $ 将任意表达式进行内插

julia> a = "Hello"
"Hello" julia> b = "World"
"World" julia> "$a $b, $(1 + 2)"
"Hello World, 3"

如果需要在字符串中使用 $,要进行转义

julia> a = "Hello"
"Hello" julia> b = "World"
"World" julia> "\$a + \$b"
"\$a + \$b"

Julia - 字符串的更多相关文章

  1. Julia - 字符串判断函数

    isascii() 判断是否是 ascii 码,返回 Bool 值 julia> isascii('a') true julia> isascii('α') false julia> ...

  2. Julia基础语法字符和字符串

    1.Julia字符串  2.字符

  3. julia生成指定格式的字符串.jl

    julia生成指定格式的字符串.jl """ julia生成指定格式的字符串.jl http://bbs.bathome.net/thread-39829-1-1.htm ...

  4. Julia语言:让高性能科学计算人人可用

    Julia语言:让高性能科学计算人人可用要:一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理, ...

  5. [julia]本地离线安装package

    1.引言 julia最近十分受关注,其结合了python的通用性,Ruby的动态性,C的代码运行速度,R的包管理和数据分析功能,perl的字符串处理能力,lisp的宏能力,matlab的矩阵计算规则, ...

  6. 如果你喜欢python,那你迟早会喜欢上julia的!

    你可曾想过有那么一门语言: 这门语言能够有C语言一样的速度,Ruby一样得活力(dynamism).像homoiconic一样的语言,它像Lisp一样有宏,但是也像Matlab一样有显而易见.熟悉的数 ...

  7. julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题

    这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...

  8. julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域

    编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身2018-08-14 14:14 公司Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准医疗 ...

  9. Julia - 变量

    变量的赋值 julia> a = 1 # 把 10 赋给变量 a 1 julia> a + 1 # 变量 a 的值加 1 2 julia> a = 4 # 重新赋值给变量 a 4 j ...

随机推荐

  1. Happy Swifting!

    Happy Swifting! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

  2. Redis学习总结之三——Redis客户端命令

    Windows命令行启动Redis客户端 1. 使用默认IP地址和端口连接Redis数据库(IP地址:127.0.0.1,端口号6379) redis-cli 2. 使用指定IP地址和端口连接Redi ...

  3. 21天学通C++_Day6

    0.指针&数组 数组是指向其第一个元素的指针,即数组变量就是指针.故可将(*)用于数组,也可将([])用于指针,eg: int MyNums[5] = {0}; int* pNums = My ...

  4. andriod studio报错 Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration! Emulator: Process finished with exit code 1

    安装即可,再次运行svd,成功

  5. win7下VS2010编译python3

    转自:http://www.cnblogs.com/fortwo/archive/2013/04/16/3023871.html 1.首先从python.org上:http://www.python. ...

  6. Hibernate One-to-One Mappings 一对一关系映射

    Hibernate One-to-One Mappings 一对一关系映射 关键:一对一关系映射和多对一关系映射非常像.仅仅是unique 属性值为 true 样例:一个员工仅仅能有一个地址. Hib ...

  7. 最最基本的SQL常用命令

    2015-12-01 18:08:52 1.启动/关闭mysql 开始菜单搜索cmd,右击,以管理员身份运行,输入net start mysql启动mysql,输入net stop mysql关闭my ...

  8. Python 函数 memoryview()

    memoryview() 函数返回给定参数的内存查看对象(Momory view). 所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问.返回元组列表 ...

  9. video4linux(v4l)使用摄像头的实例基础教程与体会(转)

    1. video4linux基础相关     1.1  v4l的介绍与一些基础知识的介绍   I.首先说明一下video4linux(v4l).           它是一些视频系统.视频软件.音频软 ...

  10. Linux环境安装配置Swftools

    系统:CentOS6.5的64位版本   这里有一位仁兄的几个错误处理办法,下面是swftools的安装配置步骤:   1.安装所需的库和组件.机器之前安装过了,主要安装的是下面几个组件.如果不安装会 ...