JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】文字列を0と1のバイナリ形式に変換する方法

本記事では、小文字の文字列を受け取り、a〜m の範囲の文字を「0」n〜z の範囲の文字を「1」に置き換えた新しい文字列を返す JavaScript 関数の実装方法を解説します。

変換ルールの概要

今回作成する関数は、以下のルールに従って文字列を変換します。

  • a から m までの英字 → 0
  • n から z までの英字 → 1
  • スペースや記号などの特殊文字 → 元の文字をそのまま出力

コード例

実際のコードは以下の通りです。

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));

処理の流れを解説

  1. toLowerCase() による正規化: まず文字列全体を小文字に変換します。これにより、入力に大文字が混在していても正しく判定できるようになります。
  2. 特殊文字の判別: 各文字に対して toLowerCase()toUpperCase() の結果を比較し、両者が一致した場合は英字以外(スペース・数字・記号など)とみなして、元の文字をそのまま結果に追加します。
  3. 文字同士の比較: JavaScript では文字列を > 演算子で比較すると、辞書順(Unicode コードポイント順)で評価されます。そのため s[i] > 'm' というシンプルな条件で、対象の文字が n〜z の範囲にあるかどうかを判定できます。

実行結果

コンソールには以下のように出力されます。

00001 111000 011 010 111

たとえば先頭の「Hello」を見てみると、h→0、e→0、l→0、l→0、o→1 となり「00001」に変換されます。また、単語間のスペースは特殊文字として扱われ、そのまま保持されていることが確認できます。

この手法を応用すれば、文字列を簡易的なビットパターンにマッピングする処理や、特定の文字範囲ごとの分類処理などにも活用できます。

  1. JavaScriptで文字列を真偽値(Boolean)に変換する方法

    JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style>     body {         font-family: &

  2. JavaScriptで配列をSet(セット)に変換する方法

    JavaScriptで配列をSetに変換するときの基本JavaScriptでは、Setオブジェクトを使うことで、配列から重複しない一意の値だけを持つコレクションを簡単に作成できます。SetはES6(ECMAScript 2015)で導入された組み込みオブジェクトで、同じ値が複数回追加されても自動的に1つにまとめられるのが特徴です。変換自体は非常にシンプルで、new Set(配列)と書くだけで完了します。コード例:配列からSetへの変換以下は、重複を含む配列をSetに変換して画面に表示するサンプルコードです。<!DOCTYPE html> <html lang=ja> &