前回に引き続きJuliaについてです。
ドキュメントに沿って試していきます。
よく使うのを試します。
length
julia> Base.length("abcdefg")
7
julia> Base.length("日本語")
3
julia> length("日本語")
3
Baseモジュールのメソッドです。普通ですかね。
Concatenate
julia> "こんにちは" * "日本"
"こんにちは日本"
julia> "こんにちは" + "日本"
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> "こんにちは" . "日本"
ERROR: syntax: space before "." not allowed in ""こんにちは" ."
julia> "こんにちは" * "日本" * 'JJ'
ERROR: syntax: invalid character literal
julia> "こんにちは" * "日本" * 'J'
"こんにちは日本J"
文字列の結合です。.
や+
ではなく*
なんですね。
Base.string
julia> string(16,base = 10,pad =4)
"0016"
julia> string(16,base = 8,pad =4)
"0020"
julia> string(16,base = 2,pad =4)
"10000"
16進数とか桁数で文字列にできるってことですかね。
Base.SubString
julia> Base.SubString("abcde", 1, 2)
"ab"
julia> Base.SubString("abcde", 1:2)
"ab"
julia> Base.SubString("abcde", 2:4)
"bcd"
julia> Base.SubString("abcde", 2,2)
"b"
julia> Base.SubString("abcde", 2,4)
"bcd"
julia> Base.SubString("abcde", 3,4)
"cd"
julia> Base.SubString("abcde", 3)
"cde"
インデックスで指定するのと2:4
みたいにレンジで指定するのがあるんですね。
正規表現
julia> Base.match(r"[0-9]+"ism ,"abc123ed456")
RegexMatch("123")
julia> a.match
"123"
正規表現も使えます。
Base.lpad
julia> Base.lpad("THANK",1)
"THANK"
julia> Base.lpad("THANK",10)
" THANK"
右詰(左にスペース)を指定できます。
Base.rpad
julia> Base.rpad("THANK",1)
"THANK"
julia> Base.rpad("THANK",10)
"THANK "
lpadと逆ですね。
Base.split
julia> a = split("1,2,3,4,5,,,,",",")
9-element Array{SubString{String},1}:
"1"
"2"
"3"
"4"
"5"
""
""
""
""
julia> length(a)
9
CSVなどでカンマが連続しててもちゃんと分割してくれるようです。
Base.strip
julia> strip("{Hello}\n", ['{', '}', '\n'])
"Hello"
改行文字の除去とかに使えそうです。
Base.startswith
julia> Base.startswith("HelloWorld","World")
false
julia> Base.startswith("HelloWorld","Hello")
true
start*s*withなんですね。
Base.Unicode.uppercase、lowercase
julia> uppercase("Julia")
"JULIA"
julia> lowercase("JuLIA")
"julia"
うむ、普通です。
Base.Unicode.titlecase
julia> titlecase("the JULIA programming language")
"The Julia Programming Language"
julia> titlecase("the JULIA programming language" , strict=false)
"The JULIA Programming Language"
英文にしか使わないかも。
Base.join
julia> join(["apples", "bananas", "pineapples"], ", ", " and ")
"apples, bananas and pineapples"
julia> join(["apples", "bananas", "pineapples"], ", ")
"apples, bananas, pineapples"
julia> join(["apples", "bananas", "pineapples"], ", ","と")
"apples, bananasとpineapples"
3つ目の引数がこれまた英語っぽいでですね。
julia> join(split("1,2,3,4,,,,,",","), " - ")
"1 - 2 - 3 - 4 - - - - - "
普通に使えます。
Base.chop、chomp
julia> chop("ABC.")
"ABC"
julia> chomp("ABC.")
"ABC."
julia> chomp("ABC\n")
"ABC"
julia> chomp("ABC\r\n")
"ABC"
普通にいい感じです。
Base.Unicode.isnumeric
julia> isnumeric('௰')
true
julia> isnumeric('9')
true
julia> isnumeric('α')
false
julia> isnumeric('❤')
false
わかりますけどー、௰を数値にしちゃうのか...
今日はこの辺で。