[Raku] 如何取得字串切片

作者:   發佈於:   #rakulang #howto

所謂字串切片,指的是現有字串中的一部分內容的意思。以這個字串 $s 來舉例:

my Str $s = "零一二三四五六七八九abcdefg";

若要取得其中自「三」字開始,「d」字結束的這段切片,可利用字串型別的 .substr 函式。

my Str $t = $s.substr(3, 11);
say $t;
#=> 三四五六七八九abcd

其第一個參數表示起始位置,第二個參數表示切片的字元數。.substr(3,11) 就是「自位置 3 開始,取 11 個字符」的意義。

另外,也可利用數值範圍來指定起始位置與結束位置:

my Str $u = $s.substr(3..13);
say $u;
#=> 三四五六七八九abcd

.substr(3..13) 就是「切出位置 3 到 13 中的字符」的意義。

兩種寫法,一種是指定長度,一種是制定前後邊界位置。可視情況來選擇比較容易理解的寫法。