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

JavaScriptで文字列を16進数に変換し、数字部分の合計を求める方法

問題

文字列を受け取り、その中のすべての文字をそれぞれのASCIIコードの16進数値に変換し、さらに16進数文字列に含まれる数字部分(英字は除外)だけを合計して結果を返すJavaScript関数を作成する必要があります。

処理の流れ

  1. 文字列を1文字ずつに分割する
  2. 各文字をASCIIコードに変換する
  3. ASCIIコードを16進数表記の文字列に変換する
  4. すべての16進数文字列を連結する
  5. 数字のみを抽出する
  6. 合計を求めて返す

コード例

以下が実際の実装例です。

const str = "Hello, World!";
const toHexAndSum = (str = '') => {
   return str
   .split('')
   .map(c=>c.charCodeAt())
   .map(n=>n.toString(16))
   .join('')
   .split('')
   .filter(c=>'123456789'.includes(c))
   .map(d=>parseInt(d))
   .reduce((a, b)=>a+b, 0)
};
console.log(toHexAndSum(str));

コードの解説

  • split(''):文字列を個々の文字に分解します。
  • charCodeAt():各文字のASCIIコード(10進数)を取得します。
  • toString(16):数値を16進数表記の文字列に変換します。
  • join('') → split(''):すべての16進数文字列を連結した後、再び1文字ずつに分解します。
  • filter():「123456789」に含まれる数字だけを残します(「0」や英字は除外されます)。
  • reduce():抽出された数字をすべて足し合わせて合計を求めます。

なお、「Hello, World!」の場合、各文字のASCIIコードを16進数に変換して連結すると「48656c6c6f2c20576f726c6421」となり、この中から数字だけを取り出して合計すると91になります。

出力

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

91
  1. JavaScriptでアルファベットをギリシャ文字に変換する方法

    問題の概要 大文字の英語アルファベットで構成される文字列 str を唯一の引数として受け取り、ギリシャ文字へ変換するJavaScript関数を作成します。 英語とギリシャ文字の対応関係は以下の通りです。 A=α(Alpha) B=β(Beta) D=δ(Delta) E=ε(Epsilon) I=ι(Iota) K=κ(Kappa) N=η(Eta) O=θ(Theta) P=ρ(Rho) R=π(Pi) T=τ(Tau) U=μ(Mu) V=υ(Upsilo

  2. JavaScriptで任意の記法の文字列をキャメルケースに変換する方法

    問題 JavaScriptで、通常の文・スネークケース・パスカルケースなどどんな記法で書かれた文字列でも受け取れる関数を作成し、その文字列をキャメルケース(camelCase)に変換することを考えます。 たとえば、関数への入力が次のようになっているとします。 入力 const str = New STRING; 期待される出力 const output = newString; サンプルコード 以下が実際のコードです。 const str = New STRING; const toCamelCase = (str = ) => { return str .re