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

目录

 

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

2、常用操作

2.1 char

2.2 String的基本操作

2.3 String字符串拼接

2.4 插值

2.5常见操作

2.6 正则表达式

2.7 其他一些操作


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

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

  • Julia 中用于字符串(和字符串文字)的内置具体类型是 String。 它支持全部 Unicode 字符 通过 UTF-8 编码。(transcode 函数是 提供 Unicode 编码和其他编码转换的函数。)
  • 所有的字符串类型都是抽象类型 AbstractString 的子类型,而一些外部包定义了别的 AbstractString 子类型(例如为其它的编码定义的子类型)。若要定义需要字符串参数的函数,你应当声明此类型为 AbstractString 来让这函数接受任何字符串类型。
  • 类似 C 和 Java,但是和大多数动态语言不同的是,Julia 有优秀的表示单字符的类型,即 AbstractCharCharAbstractChar 的内置子类型,它能表示任何 Unicode 字符的 32 位原始类型(基于 UTF-8 编码)。
  • 如 Java 中那样,字符串不可改——任何 AbstractString 对象的值不可改变。 若要构造不同的字符串值,应当从其它字符串的部分构造一个新的字符串。
  • 从概念上讲,字符串是从索引到字符的部分函数:对于某些索引值,它不返回字符值,而是引发异常。这允许通过编码表示形式的字节索引来实现高效的字符串索引,而不是通过字符索引——它不能简单高效地实现可变宽度的 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字符串拼接

greet = "Hello"
whom = "world"

#使用String函数拼接
string(greet, ", ", whom, ".\n")

#也可以通过 * 号操作符拼接
greet * ", " * whom * ".\n"
# "Hello, world.\n"

2.4 插值

#插值类型 ,在字符串中 使用 $符号 获取属性值
"$greet, $whom.\n"

"1 + 2 = $(1 + 2)"
c = 'x'

"hi, $c"

2.5常见操作

#三引号字符串文本,如果三引号范围有换行,也会一并带到输出中的
str = """ Hello, world. """
# Hello, world.

str = """
           Hello,
           world.
         """
#  "  Hello,\n  world.\n"


#常见操作
#字符串比较
"abracadabra" < "xylophone"
"abracadabra" == "xylophone"
"Hello, world." != "Goodbye, world."
"1 + 2 = 3" == "1 + 2 = $(1 + 2)"

#字符串查找
findfirst(isequal('o'), "xylophone")
findnext(isequal('o'), "xylophone", 5)
findlast(isequal('o'), "xylophone")

contains("Hello, world.", "world")

repeat(".:Z:.", 10)

endswith("xylophone", 'e')

startswith("xylophone", 'x')

length("xylophone")


nextind("xylophone",1)

2.6 正则表达式

#正则表达式
#Julia有类似Perl的正则表达式
#在Julia中,正则表达式使用以r开头的各种标识符作为前缀的非标准字符串文本作为输入
#如果匹配成功返回的是一个RegexMatch()对象,如果匹配不成功返回nothing

r"^\s*(?:#|$)"

m = match(r"^\s*(?:#|$)", "not a comment")
#nothing

m = match(r"[0-9]","aaaa1aaaa2aaaa3",11)
#RegexMatch("1")

m = match(r"(a|b)(c)?(d)", "acd")

 

2.7 其他一些操作

中文版见:https://docs.juliacn.com/latest/manual/strings/#man-concatenation-1

英文版见:https://julia-doc.readthedocs.io/en/latest/manual/strings/#strings

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

October-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值