English help on website



char_to_ucs4( s1, n1 ) 関数(Ver9.24対応版)
目次関数(文字列操作)− char_to_ucs4( s1, n1 ) 関数
char_to_ucs4関数は、文字位置からUnicode(UCS-4)単位の文字位置の変換をして、変換された位置を取得します。(V8.96以降)

パラメータ1(文字列型 または 数値型)
文字列を指定すると、文字列を対象に変換します。
数値を指定すると、1から数えた行番号(lineno相当)の本文のテキストを対象に変換します。

パラメータ2(数値型)
0から数えた文字位置(column相当)を指定します。

返り値(数値型)
Unicode(UCS-4)単位の文字位置(column_ucs4相当)を返します。


strlen等の文字の数え方は、全角を2つ、半角を1つとして数えます。
ucs4len等のUnicode(UCS-4)の文字の数え方は、全角も半角も1つとして数えます。
UTF-16でサロゲートペアとなる文字も1つとして数えます。
この数え方の違いを変換します。
文字の先頭を 0 として、いくつ目かで計算します。
以下の例では、3を返します。
#ucs4 = char_to_ucs4("あいうabcde", 6 ); //"あいう"はcolumn相当で6文字
message str(#ucs4); //Unicode(UCS-4)単位で3文字
newfile;
insert "あいうabcde\n"; //1行目となるテキスト
#ucs4 = char_to_ucs4(1,6); //1行目のcolumn相当で6文字目
message str(#ucs4); //Unicode(UCS-4)単位で3文字
関数名は互換のためにcharindex_to_ucs4indexとしても使えます。
参照:
column
ucs4_to_char
ucs4len
文字の単位
文字の単位ごとに各種のバリエーションがあります。