LANG SELRCT

コードを書く場所についてはこちら

2018年2月5日月曜日

文字列⇔UTF16⇔16進数の相互変換をする(サロゲートペア非対応)


文字列とUTF16と16進数について調べているときに作った相互変換機能です

いずれかの入力欄に変換したい値を入れると他の2つの値が自動で表示されます



例:
文字列に「a」と入力するか
UTF16に「97」と入力するか
16進数に「61」と入力すると以下のように他の2つの値が自動で埋まる
※ここではサロゲートペアは考慮せず前半部分のみ変換します

サロゲートペア対応版はこちら


HTML Serviceで作ってみる



コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
  <body>
    <table>
      <tbody>
        <tr>
          <td>
            <label>文字列</label>
          </td>
          <td>
            <input type="text" id="str">
          </td>
        </tr>
        <tr>
          <td>
            <label>UTF16</label>
          </td>
          <td>
            <input type="text" id="utf16">
          </td>
        </tr>
        <tr>
          <td>
            <label>16進数</label>
          </td>
          <td>
            <input type="text" id="hexadecimal">
          </td>
        </tr>
      </tbody>
    </table>
    <script>
    var str = document.getElementById("str");
    var utf16 = document.getElementById("utf16");
    var hexadecimal = document.getElementById("hexadecimal");

    str.onkeyup = keyup;
    utf16.onkeyup = keyup;
    hexadecimal.onkeyup = keyup;

    function keyup() {
      switch (this.id) {
      case "str":
        get_utf16();
        get_hexadecimal();
        break;
      case "utf16":
        get_hexadecimal();
        get_str();
        break;
      case "hexadecimal":
        get_str();
        get_utf16();
        break;
      }
    }

    function get_str() {
    str.value = String.fromCharCode("0x" + hexadecimal.value);
    }

    function get_utf16() {
      utf16.value = str.value.charCodeAt();
    }

    function get_hexadecimal() {
      hexadecimal.value = parseInt(utf16.value).toString(16);
    }
  </script>
  </body>
</html>
意訳
これはHTML5文書です






文字列のラベル


そのテキストボックス




UTF16のラベル


そのテキストボックス




16進数のラベル


そのテキストボックス





idがstrの要素を取得する
idがutf16の要素を取得する
idがhexadecimalの要素を取得する

idがstrの要素でキーが上がったらkeyupを実行する
idがutf16の要素でキーが上がったらkeyupを実行する
idがhexadecimalの要素でキーが上がったらkeyupを実行する

この機能がやること
idによって処理を分ける
idがstrなら
get_utf16()と
get_hexadecimal()を実行する

idがutf16なら
get_hexadecimal()と
get_str()を実行する

idがhexadecimalなら
get_str()と
get_utf16()を実行する




この機能がやること
strの値はhexadecimalの頭に0xを付けて文字列にした値を入れる


この機能がやること
utf16の値はstrの値をUTF16にした値を入れる


この機能がやること
hexadecimalの値はutf16の値を16進数にした値を入れる