Julia ---- String 字符串类型常用操作

让人想犯罪 __ 提交于 2020-01-31 00:22:16

1、字符类型String的一些特点

Julia Strings 有几个值得注意的高级特征:

(1)Julia中用于字符串(和字符串文本)处理的的内置类型是string。它使用UTF-8编码,并支持所有的的Unicode字符。(提供了transcode()函数,用于转换为其他程序的Unicode编码或从其他程序的Unicode编码转换为自己的Unicode编码。)

(2)所有字符串类型都是抽象类型abstract string的子类型,其他外部包也会定义额外的抽象字符串子类型(例如,用于其他编码)。如果定义的函数需要字符串参数,则应将参数类型声明为AbstractString,以便接受其他的字符串类型。

(3)像C和Java一样,但是与大多数动态语言不同,Julia有一个表示单个字符的一级类型,称为Char。这只是一种特殊的32位原语类型,其数值表示Unicode编码值。

(4)与Java一样,Julia的字符串是不可变的:AbstractString对象的值不能更改。要使用不同的字符串,可以从其他字符串的部分构造新字符串。

(5)从概念上讲,字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的:对于某些索引值,如果不返回字符值,就会引发异常。它允许通过编码表示的字节索引而不是通过由字符索引来高效地对字符串进行索引,因为字符索引对于Unicode字符串的可变宽度编码来说,实现起来既不简单,也不高效。

2、常用操作

2.1 char

#类型
typeof('s')

#对应的Unicode编码值
Int('x')

#Unicode编码值转字符
Char(120)

#检查是否是一个有效Unicode编码值
isvalid(Char, 0x110000)

#\u您可以在单引号中输入任何Unicode字符,输入方式为:u后跟最多四个十六进制数字,或u后跟最多八个十六进制数字(最长的有效值只需要六个):
'\u78'

#字符之间可以比较
'A' < 'a'

2.2 String的基本操作

#String的基本操作
#字符串索引
str="Hello, world.\n"

#使用小于 1 或大于 `end` 的索引都是错误的
str[0]
str[end+1]
#BoundsError: attempt to access "Hello, world.\n"
# at index [0]

#下面两个表达式的值是不同的,一个是Char,另一个是String
str[6]
str[6:6]

#Unicode 和 UTF-8
#这里需要注意一个事情:在这种情况下,字符∀是一个三字节字符,因此索引2和3无效,下一个字符的索引是4
s = "\u2200 x \u2203 y"
s[1]
s[2]
#StringIndexError("∀ x ∃ y", 2)
#string_index_err(::String, ::Int64) at string.jl:12

s[4]
#值为' ': ASCII/Unicode U+0020 (category Zs: Separator, space)

#可以使用nextind函数返回下一个字符串索引值
nextind(s,1)
#返回值为:4

#因此length(s)长度和 最大的索引值 可能是不一样的。
length(s)

endof(s)

length(s) <= endof(s)

for c in s
           println(c)
end

2.3 String字符串拼接

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!