2023年 メディアアート・プログラミング 第5回 #スライド #テキスト操作のサンプルコード #load_text.js(ファイルの読み込み) #//ファイル読み込みライブラリを使用 const fs = require("fs"); //ファイル名の指定(./はこのjsファイルと同階層にあることを明示) const src = "./henshin.txt"; //ファイルを読み込み const bytes = fs.readFileSync(src); //バイト列から文字列に const txt = bytes.toString(); console.log(txt); load_text.jstext_as_array.js (文字列から文字をインデックスで取り出す) #文字列オブジェクトはJavascriptの中では配列のようにstr[idx]として先頭からidx番目の文字を取り出せます。///...以上load_text.jsと同じ //配列として先頭から100文字コンソールに表示 for (let i =0;i<100;i++) { console.log(txt[i]) } text_as_array.jstext_as_array2.js (文字列を文字の配列オブジェクトにする) #より明確に1文字ずつを要素とした配列オブジェクトにすることもできます。こちらのやり方だと、配列を変換するmapやfilter、reduceなどの便利な関数が使えます。///...以上load_text.jsと同じ //文字の配列にする const arr = Array.from(txt); console.log(arr); text_as_array2.jstext_sort.js (文字列を文字コード順でソート) #///...以上load_text.jsと同じ //文字の配列にする const arr = Array.from(txt); //配列を文字コード順でソート const sorted = arr.sort(); //ソートした配列を(区切り文字なしで)結合 const sorted_str = sorted.join(""); //ファイルに保存 fs.writeFileSync("henshin_sorted.txt",sorted_str); text_sort.jstext_reversed.js (文字列を前後逆転) #///...以上load_text.jsと同じ //文字の配列にする const arr = Array.from(txt); //配列を反転 const reversed = arr.reverse(); //反転した配列を(区切り文字なしで)結合 const reversed_str = reversed.join(""); //ファイルに保存 fs.writeFileSync("henshin_reversed.txt",reversed_str); text_reversed.jstext_unicode_shift.js (文字列のUnicodeコードポイントを一つずつずらす) #///...以上load_text.jsと同じ //文字の配列にする const arr = Array.from(txt); //配列の文字コードを1つ隣へずらす const shifted = arr.map( c => String.fromCodePoint(c.codePointAt(0)+1)); //ソートした配列を(区切り文字なしで)結合 const shifted_str = shifted.join(""); //ファイルに保存 fs.writeFileSync("henshin_shifted.txt",shifted_str); text_unicode_shift.jstext_unicode_shift_grad.js (文字列のUnicodeコードポイントをずらす確率を段々上げていく) #///...以上load_text.jsと同じ //文字の配列にする const arr = Array.from(txt); //文字コードをずらす確率 let probability = 0.0; const shifted = arr.map(c => { //配列の最初:0%-最後:100%になるように確率を変更していく probability += 1 / arr.length; //randomは0~1の乱数 if (Math.random() < probability) { //配列の文字コードを1つ隣へずらす return String.fromCodePoint(c.codePointAt(0) + 1) } else { return c } }); //ソートした配列を(区切り文字なしで)結合 const shifted_str = shifted.join(""); //ファイルに保存 fs.writeFileSync("henshin_shifted_grad.txt", shifted_str); text_unicode_shift_grad.js