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

發佈了94 篇原創文章 · 獲贊 74 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章