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

JavaScriptで文字列から数字だけを抽出する方法

問題

アルファベット・特殊文字・数字が混在した文字列 str を受け取り、その中に含まれる数字だけを元の順序のまま抽出して、新しい文字列として返すJavaScript関数を作成します。

例えば、関数への入力が次の場合:

const str = 'revd1fdfdfs2v34fd5gfgfd6gffg7ds';

期待される出力は次のとおりです。

const output = '1234567';

解決コード

以下がその実装例です。

const str = 'revd1fdfdfs2v34fd5gfgfd6gffg7ds';
const pickNumbers = (str = '') => {
  let res = '';
  for (let i = 0; i < str.length; i++) {
    const el = str[i];
    if (+el) {
      res += el;
    }
  }
  return res;
};
console.log(pickNumbers(str));

コードの解説

この関数は、文字列を1文字ずつ走査し、単項プラス演算子(+)を使って各文字を数値に変換しています。変換結果が真値(truthy)であれば、その文字は数字であると判断し、結果の文字列に連結していきます。これにより、元の文字列内で数字が出現した順序が保たれたまま、数字のみが抽出されます。

出力結果

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

1234567

注意点とより簡潔な代替方法

上記の実装では、文字「0」を単項プラスで数値化すると 0(偽値)になるため、文字列に「0」が含まれている場合は正しく抽出できない点に注意が必要です。実務では、正規表現を使った次のような実装がより簡潔で安全です。

const pickNumbers = (str = '') => str.replace(/\D/g, '');

また、matchメソッドを使う方法もあります。

const pickNumbers = (str = '') => (str.match(/\d/g) || []).join('');

いずれの方法でも、元の文字列内の数字の並び順を維持したまま、数字のみを確実に抽出できます。

  1. JavaScriptで文字列から重複を除いて一意な文字だけを抽出する方法

    問題JavaScriptで、文字列 str を引数として受け取る関数を作成します。この関数は、入力文字列の中で一度だけ出現する文字(一意な文字)だけで構成される新しい文字列を組み立てて返す必要があります。言い換えると、重複して現れるすべての文字を取り除く処理です。 コード例以下がその実装例です。 { let res = ; for(let i = 0; i < str.length; i++){ const el = str[i]; if(str.indexOf(el) === str.lastIndexOf(el)){

  2. JavaScriptで文字列から句読点・特殊文字を削除する方法

    問題文字列を受け取り、その中からすべての句読点や特殊文字を取り除き、結果の文字列には英字と数字だけを残すJavaScript関数を作成する必要があります。入力const str = th@is Str!ing Contains 3% punctuations;出力const output = thisStringContains3punctuations;これは、すべての句読点(記号)と空白を削除したためです。コード例以下がその実装例です。const str = th@is Str!ing Contains 3% punctuations; const removeSpecialChars =