概要
nimのUnicode操作をコツコツと。
nimでも日本語リテラルは通りますが、日本語文字列の操作をstring型で利用しようとすると
期待通りに動きません。
そこでunicodeモジュールを使って、ルーン(Rune)型として利用するようです。
以下メモ
うまくいかない例
import unicode,strutils
block:
var str = "あいうえお"
#echo "表示されない=>",str[0]
echo "表示される =>",str[0..2]
echo "文字列長 =>",str.len
(stdout)
表示される =>あ
文字列長 =>15
Rune型を利用
import unicode,strutils
block:
var str = "あいうえお".toRunes
echo $str
echo "表示される =>",str[0]
echo "表示される =>",str[0..2]
echo "文字列長 =>",str.len
(stdout)
あいうえお
表示される =>あ
表示される =>あいう
文字列長 =>5
stringクラス拡張
import unicode,strutils
block:
var str = "あいうえお"
echo "文字列長=>",str.runeLen
echo "バイトインデクス=>",str.runeAt(0)
echo "バイトインデクス=>",str.runeAt(3)
echo "バイトインデクス=>",str.runeAt(6)
echo "バイトインデクス=>",str.runeAt(9)
echo "バイトインデクス=>",str.runeAt(12)
echo "インデクス=>",str.runeAtPos(0)
echo "インデクス=>",str.runeAtPos(1)
echo "インデクス=>",str.runeAtPos(2)
echo "インデクス=>",str.runeAtPos(3)
echo "インデクス=>",str.runeAtPos(4)
(stdout)
バイトインデクス=>あ
バイトインデクス=>い
バイトインデクス=>う
バイトインデクス=>え
バイトインデクス=>お
インデクス=>あ
インデクス=>い
インデクス=>う
インデクス=>え
インデクス=>お