Julia言語で文字列を操作する方法をご紹介します。
Julia言語で文字列リテラルを表すには、文字列を2重引用符で囲む。
str = "hello, world"
2重引用符を含む文字列の場合は、文字列を3つの2重引用符で囲む。
str = """Say "hello, world"."""
Juliaで文字列を表示するには、println
を使用する。
julia> println("hello, World")
hello, world
文字列を格納した変数や文字列リテラルは、配列として使うことができる。他の多くのプログラミング言語では配列の添字は0から始まるが、Juliaでは配列の添字は1から始まる。
julia> "abc"[1]
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
julia> "abc"[2]
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
全角文字の場合はバイトサイズに注意する。
julia> "いろは"[1]
'い': Unicode U+3044 (category Lo: Letter, other)
julia> "いろは"[2]
ERROR: StringIndexError: invalid index [2], valid nearby indices [1]=>'い', [4]=>'ろ'
Stacktrace:
[1] string_index_err(s::String, i::Int64)
@ Base .\strings\string.jl:12
[2] getindex_continued(s::String, i::Int64, u::UInt32)
@ Base .\strings\string.jl:248
[3] getindex(s::String, i::Int64)
@ Base .\strings\string.jl:241
[4] top-level scope
@ REPL[13]:1
julia> "いろは"[4]
'ろ': Unicode U+308D (category Lo: Letter, other)
文字列の最後の文字を参照するには、配列の特殊な添字「end
」を使う。
julia> "abc"[end]
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
配列の添字は範囲指定することもできる。たとえば2文字目から4文字目までの場合は次のようにする。
julia> "example"[2:6]
"xampl"
Juliaで複数の文字列を結合するには、2通りのやり方がある。
string
関数を使って文字列を連結する*
演算子を使って文字列を連結するstring
関数は、渡されたすべての引数を連結した文字列を返す。引数に文字列以外の数値などを渡しても、キャスト(型変換)される。
julia> url = string("https:", "//segakuin.com", "/julia")
"https://segakuin.com/julia"
「*
」は文字列を結合する演算子である。オペランド(被演算子)に文字列以外を指定することはできない。
julia> url = "https:" * "//segakuin.com" * "/julia"
"https://segakuin.com/julia"
*
演算子を使うとプログラムコードがすっきりして見やすくなるが、文字列以外は明示的にキャスト(型変換)する必要があることに注意する。
Julia言語で文字列を置き換えるには、replace
関数を使う
julia> s = replace("hello, world", "world" => "japan")
"hello, japan"
Julia言語で文字列の長さを取得するには、length関数を用いる。
julia> l = length("hello, world")
12
文字列を繰り返して新たな文字列を作成するには、^
演算子を使う。
julia> s = "hello" ^ 2
"hellohello"
julia> s = "hello" ^ 3
"hellohellohello"
数値を文字列に変換するには、Base.string 関数を使う。
julia> s = string(15)
"15"
基数を指定することもできる。
julia> s = string(15, base = 2)
"1111"
julia> s = string(15, base = 16)
"f"
桁数を指定して、0埋め(パディング)することもできる。
julia> s = string(15, pad = 4)
"0015"
julia> s = string(15, base = 2, pad = 8)
"00001111"
文字列から部分文字列を取り出すには、Base.SubString 関数を使う。
SubString(string, start)
SubString(string, start, end)
SubString(string, range)
以下に示す引数を SubString 関数に指定できる。
julia> s = SubString("hello, world", 2)
"ello, world"
julia> s = SubString("hello, world", 2, 5)
"ello"
julia> s = SubString("hello, world", 2:5)
"ello"
指定した文字数になるまで左側(先頭)を空白で埋めるには、Base.lpad 関数を使う。
julia> s = lpad("hello, world", 16)
" hello, world"
指定した文字数になるまで右側(末尾)を空白で埋めるには、Base.rpad 関数を使う。
julia> s = rpad("hello, world", 16)
"hello, world "
文字列の並びを逆転させるには、Base.reverse 関数を使う。
julia> s = reverse("hello, world")
"dlrow ,olleh"
指定した文字で文字列を分割するには、Base.split 関数を使う。
julia> a = split("hello, world", ",")
2-element Vector{SubString{String}}:
"hello"
" world"
julia> a[1]
"hello"
julia> a[2]
" world"
文字列の左右(先頭と末尾)から不要な文字を取り除くには、Base.strip 関数を使う。
julia> s = strip(" hello, world ", ' ')
"hello, world"
取り除く文字を複数指定することができる。
julia> s = strip("(hello, world)", ['(', ')'])
"hello, world"
他のプログラミング言語には左右の空白を取り除く trim という関数が用意されていることがあるが、Julia言語には無い。
文字列の左(先頭)から不要な文字を取り除くには、Base.lstrip 関数を使う。
julia> s = lstrip(" hello, world ", ' ')
"hello, world "
他のプログラミング言語には左側の空白を取り除く ltrim という関数が用意されていることがあるが、Julia言語には無い。
文字列の右(末尾)から不要な文字を取り除くには、Base.rstrip 関数を使う。
julia> i = rstrip("20.315%", '%')
"20.315"
他のプログラミング言語には右側の空白を取り除く rtrim という関数が用意されていることがあるが、Julia言語には無い。
Base.endswith 関数を使って、指定した文字列で終わるかどうかを確認できる。
julia> endswith("Julia", "ia")
true
julia> endswith("Julia", "IA")
false
Base.startswith 関数を使って、指定した文字列で始まるかどうかを確認できる。
julia> startswith("Julia", "Ju")
true
julia> startswith("Julia", "JU")
false
JuliaLang.org contributors (2021) Julia Documentation