0

UFT16 でエンコードされた string がありますtheUFT16string。全角文字が含まれています。Unicode文字ごとにUnicode文字をやり取りしたいと思います。チャンク式が半角文字で動くのはわかりましたか?

次の文字列があります

   abcαβɣ

それを反復して、各文字を別のコンテナの行に配置したいと考えています。

4

1 に答える 1

0

LiveCode では、UTF16 文字列から文字を取得する方法が 2 つあります。文字列がフィールドに表示されている場合は、次のことができます

select char 3 of fld 1

フィールドにロシア語またはポーランド語のテキストがある場合は、1 文字が正しく選択されます。ただし、この機能は LiveCode ではあまり開発されておらず、多くの中国語、日本語、アラビア語 (およびその他の) 言語では失敗します。したがって、今のところバイトを使用することをお勧めします。

select byte 5 to 6 of fld 1

後者は LiveCode の将来のバージョンとも互換性がありますが、前者は互換性がない可能性があります。

とにかく、文字列は変数に含まれています。つまり、文字列をバイトとして処理する必要があります (文字を使用できますが、この場合、データは変数にあるため、バイトと文字は同じ方法で処理されます)。変数を 2 ずつ、つまり一度に 1 文字ずつ繰り返すことができます。

repeat with x = 1 to number of bytes of theUFT16String step 2
  put byte x to x+1 into myChar
  // do something with myChar here, e.g. reverse the bytes?
  put byte 2 of myChar & char 1 of myChar after myNewString
end repeat
// myNewString now contains the entire theUTF16String in reverse byte order.

(これを 4 行ではなく 3 行で行うこともできますが、この例では、バイトを var myChar に格納する行を追加しました)。

于 2013-04-21T09:38:14.247 に答える