100日後に完成するゲームシステム 31日目「javascriptの文字列変換ショートコード集」

2021年2月13日

テクノロジー 特集

t f B! P L
プログラム言語は、使えば使うほど、使い方が熟知できて、上限値がわからなくなってきた、弓削田です。 セーブデータの保存データの暗号化プログラムを作った時に、 改めてjavascriptでの、文字列操作などをやる時に、覚えておきたいと思ったものを、 ピックアップして、ブログに残しておきたいと思います。

同じ文字を任意数分つなげた文字列を作る

これは、数値のゼロパディングなどで使える技でもあるんですが、 単純に、"000"という風に書いてもいいのですが、桁数がわからない時に、 "0"*3という風に、stringに対して行えると便利なんですが、そういうワケにもいかず、 以下のように記述しました。 let str = "0".repeat(3); console.log(str); > "000" repeat()関数は、ECMAScript 2015で追加された命令なので、比較的新しい機能のようですね。 "0"の箇所は、"abc"のような単語でも使えて、repeat(@int)整数値を受け付ける仕様だそうです。 他に使うイメージは無いんですが、使わないと忘れそうだったので、書いておきます。

文字列を任意桁数毎に配列に分割して格納する

この機能は、上記の桁合わせをした文字列を複数個まとめて1つの文字列にした時に、 それをデリミタ付きの、文字列にすると、無駄なバイト数を使ってしまうので、 「桁数が同じであれば、文字数に応じて文字列から配列に変換してしまおう」という時に使える技です。 let arr = ["abc" , "def" , "ghi"]; let str = arr.join(""); let arr2 = str.match(/.{3}/g); console.log(str); > "abcdefghi" console.log(arr2); > ["abc" , "def" , "ghi"]; サンプルプログラムでは、3桁毎に文字列を分割してみましたが、match(/.{3}/g) これって、結構使える処理ですな。

文字列の文字コードを取得する

単純に、文字列をコード化する処理は、暗号化には必要不可欠なので、javascriptで扱う時に必須な機能です。 let val = "abc"; let arr = []; for(let i=0; i<val.length; i++){ arr.push(val.charCodeAt(i)); } console.log(arr); > [97, 98, 99]

文字コードを文字に変換する

上記の逆パターンです。 let arr = [97, 98, 99]; for(let i=0; i<arr.length; i++){ let str = String.fromCharCode(arr[i]); console.log(str); } > a > b > c 文字コードを復元するには、上記方法です。

文字列 <--> Base64化

base64エンコード、デコードです。 let str = "abc"; let base64_str = btoa(str); console.log(base64_str); > YWJj let decode_str = atob(base64_str); console.log(decode_str); > abc 暗号化としては、使えないんですが、変な記号が入る文字列を整える時にbase64は便利に使えます。

2バイト文字が入っている時の文字の整え

let str = "東京都"; let enc = encodeURI(str); console.log(enc); > %E6%9D%B1%E4%BA%AC%E9%83%BD let dec = decodeURI(enc); console.log(dec); > 東京都 base64変換する時は、事前にマルチバイトをencodeURIしてから使ってください。

このブログを検索

ブログ アーカイブ

QooQ