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