JavaScriptで文字列をバイナリ文字列(0と1)に変換する方法
本記事では、小文字の文字列を受け取り、a〜m の範囲の文字をすべて 0 に、n〜z の範囲の文字をすべて 1 に置き換えた新しい文字列を返すJavaScript関数を作成します。
実装例
以下がそのコードです。
const str = 'Hello worlld how are you';
const stringToBinary = (str = '') => {
const s = str.toLowerCase();
let res = '';
for(let i = 0; i < s.length; i++){
// 記号などの特殊文字の場合
if(s[i].toLowerCase() === s[i].toUpperCase()){
res += s[i];
continue;
};
if(s[i] > 'm'){
res += 1;
}else{
res += 0;
};
};
return res;
};
console.log(stringToBinary(str));
出力結果
コンソールには以下のように出力されます。
00001 111000 011 010 111
コードの解説
この関数の仕組みを順番に見ていきましょう。
- まず
toLowerCase()を使って入力文字列をすべて小文字に統一し、大文字・小文字の違いによる判定ミスを防ぎます。 - 次に、各文字を1つずつループでチェックします。
s[i].toLowerCase() === s[i].toUpperCase()という比較により、大文字にも小文字にもなり得ない文字(数字や記号など)を検出できます。該当した場合はそのまま結果に追加してスキップします。 - 英字の場合は、文字が
'm'より大きいかどうかを比較演算子で判定します。JavaScriptでは文字列同士の比較がUnicodeコードポイントの順序で行われるため、この方法でアルファベットの前後関係をシンプルに調べることができます。 'm'より後ろの文字(n〜z)であれば1を、それ以外(a〜m)であれば0を結果の文字列に連結していきます。
たとえば入力 'Hello worlld how are you' の場合、「Hello」の H・e・l・l・o はそれぞれ h→0、e→0、l→0、l→0、o→0 となり「00001」…ではなく o は m より後ろなので「00001」とはならず、実際には h(0) e(0) l(0) l(0) o(1) で「00001」が出力されます。スペースは特殊文字としてそのまま保持されるため、単語ごとの区切りも維持されます。
-
JavaScriptの二分木(バイナリツリー)とは?基本概念と重要用語を徹底解説
二分木(バイナリツリー)は、データの格納を目的として使用される特殊なデータ構造です。最大の特徴は、各ノードが持てる子ノードの数が2つまでという条件にあります。二分木は、整列済み配列と連結リストの両方の長所を兼ね備えた構造です。検索はソートされた配列と同等の速さで行え、データの挿入や削除も連結リストと同様に高速に実行できます。そのため、大量のデータを効率的に扱いたい場合に非常に有用なデータ構造といえます。以下は、二分木の構造を示したイラストです。図には、このあと解説する重要な用語も含まれています。二分木における重要な用語二分木を理解するうえで押さえておきたい、主要な用語を以下にまとめました。パス
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &