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('');いずれの方法でも、元の文字列内の数字の並び順を維持したまま、数字のみを確実に抽出できます。
-
JavaScriptで文字列から重複を除いて一意な文字だけを抽出する方法
問題JavaScriptで、文字列 str を引数として受け取る関数を作成します。この関数は、入力文字列の中で一度だけ出現する文字(一意な文字)だけで構成される新しい文字列を組み立てて返す必要があります。言い換えると、重複して現れるすべての文字を取り除く処理です。 コード例以下がその実装例です。 { let res = ; for(let i = 0; i < str.length; i++){ const el = str[i]; if(str.indexOf(el) === str.lastIndexOf(el)){
-
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 =