ari23の研究ノート

メーカ勤務エンジニアの技術ブログです

Julia超入門|文字列の操作

今回はJuliaの文字列とその操作を扱います🐜

開発環境

開発環境は以下の通りです。

項目 内容
OS Windows 10 Home 64bit
Julia 1.6.3
Cmder 1.3.14

※Cmderは必須ではありません

解説

ここでは、文字列の「連結」、「抽出」、「長さの取得」について、スクリプトを見ながら簡単に解説します。

以下を.jlファイルとしてコピペして、動かしながら確認してください。

<スクリプト例>

function main()
    # 文字列の連結
    msg = "Hel" * "lo"
    println(msg)
    msg = string(msg, " world!")
    println(msg)

    println("-----")

    # 文字列の抽出
    println(msg[1])  # msg[begin]と等価
    println(msg[end])  # msg[-1]はエラー
    println(msg[1:5])
    println(msg[7:2:12])

    println("-----")

    # 文字列の長さ取得
    len = length(msg)
    println(len)
    println(msg[begin:len])  # msg[1:end]と等価
end

if abspath(PROGRAM_FILE) == @__FILE__
    main()
end


<出力結果>

C:\ari23\dev\julia
λ julia mojiretsu.jl
Hello
Hello world!
-----
H
!
Hello
wrd
-----
12
Hello world!

文字列の連結

Juliaでは、文字列を連結するときには演算子*を使います。+ではないので注意しましょう。

もしくはstring()を使ってもよいです。

    # 文字列の連結
    msg = "Hel" * "lo"
    println(msg)
    msg = string(msg, " world!")
    println(msg)

文字列の抽出

まずJuliaでは、インデックスは1から始まります。0始まりでないことに注意してください。

抽出の際は、対象の文字列または変数のあとに、インデックス番号を、[]を使って、

[インデックス番号]

と書きます。

なお、インデックスの最初をbeginで、最後をendで指定することが可能です。

文字列から文字列を抽出する際は、抜き出したい範囲のインデックス番号の開始端と終了端を、:を使って、

[開始端:終了端]

と書きます。

さらに、抽出するインデックスの増加数を1ではなく任意の値に指定する際には、

[開始端:増加量:終了端]

と書きます。

    # 文字列の抽出
    println(msg[1])  # msg[begin]と等価
    println(msg[end])  # msg[-1]はエラー
    println(msg[1:5])
    println(msg[7:2:12])

文字列の長さの取得

文字列の長さを取得するには、length()を使います。引数に取得したい文字列や変数を入れます。

    # 文字列の長さ取得
    len = length(msg)
    println(len)
    println(msg[begin:len])  # msg[1:end]と等価

問題|文字列の逆順

文字列を逆順、つまりmsg = "Hello world!"としたら、!dlrow olleHというように出力してください。 ただし、1文字ずつ出力したり、変数に格納し直すのは禁止です。

回答はこちら

おわりに

Juliaの文字列操作を簡単にまとめました。

上記以外にも文字列の置換や検索など、できることはたくさんあるので、ぜひ自分で調べてみてください。

以上、参考になれば幸いです(^^)

次はこちら

参考文献

参考文献は以下の通りです。

  • Julia Documentation
    Julia公式のドキュメントです。英語ですが、とても丁寧に書かれていて、疑問はだいたい解消されるのではと思います。読み応えも十分。

  • 1から始めるJuliaプログラミング
    公式ドキュメントの分量があまりに多くて、もう少しまとまったものが欲しいと思って購入しました。基本から応用まで幅広くカバーされつつ、量も丁度良いです。