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

2021/02/13

テクノロジー 特集

t f B! P L
eyecatch プログラム言語は、使えば使うほど、使い方が熟知できて、上限値がわからなくなってきた、弓削田です。 セーブデータの保存データの暗号化プログラムを作った時に、 改めて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してから使ってください。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ