parseInt()関数と正規表現の使い分け徹底解説!JavaScriptで文字列から数字を抽出
JavaScriptで文字列から数字を抽出する方法
正規表現を使用する方法
正規表現は、文字列のパターンを定義するための強力なツールです。数字を抽出するには、以下の正規表現を使用できます。
/[\d]+/g
この正規表現は、1桁以上の数字を含む連続した文字列にマッチします。 g
フラグは、すべてのマッチ箇所を抽出することを意味します。
例:
const str = "電話番号は090-1234-5678です。";
const regex = /[\d]+/g;
const matches = str.match(regex);
console.log(matches); // ["090", "1234", "5678"]
parseInt()
関数は、文字列を整数に変換します。文字列の先頭に数字が含まれている場合、その数字部分を整数として返します。
const str = "電話番号は090-1234-5678です。";
const phoneNumber = parseInt(str);
console.log(phoneNumber); // 90
注意: 文字列の先頭に数字以外の文字があると、parseInt()
関数はNaN (Not a Number) を返します。
文字列を反復処理し、各文字が数字かどうかを確認することで、数字のみを抽出することができます。
const str = "電話番号は090-1234-5678です。";
let phoneNumber = "";
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (/\d/.test(char)) {
phoneNumber += char;
}
}
console.log(phoneNumber); // 09012345678
それぞれの方法の利点と欠点:
- 正規表現: 簡潔なコードで記述できるが、正規表現の構文が複雑で分かりにくい場合がある。
- parseInt()関数: シンプルで使いやすいが、文字列の先頭に数字以外の文字があるとNaNを返してしまう。
- 文字列の反復処理: コードが冗長になるが、文字列の先頭に数字以外の文字があっても問題なく処理できる。
状況に応じて適切な方法を選択することが重要です。シンプルな処理の場合はparseInt()
関数を使用するのが一般的ですが、より複雑な処理や文字列の先頭に数字以外の文字が含まれる可能性がある場合は、正規表現を使用する方が適切です。
正規表現を使用する方法
const str = "電話番号は090-1234-5678です。";
const regex = /[\d]+/g;
const matches = str.match(regex);
console.log(matches); // ["090", "1234", "5678"]
このコードは、regex
という正規表現を使用して、str
という文字列から1桁以上の数字を含む連続した文字列をすべて抽出します。抽出された結果はmatches
という配列に格納されます。
parseInt()関数を使用する方法
const str = "電話番号は090-1234-5678です。";
const phoneNumber = parseInt(str);
console.log(phoneNumber); // 90
文字列を反復処理する方法
const str = "電話番号は090-1234-5678です。";
let phoneNumber = "";
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (/\d/.test(char)) {
phoneNumber += char;
}
}
console.log(phoneNumber); // 09012345678
このコードは、str
という文字列を反復処理し、各文字が数字かどうかを確認することで、数字のみを抽出します。抽出された数字はphoneNumber
という変数に連結されます。
説明
- 上記のコードは、いずれもJavaScriptで文字列から数字を抽出する方法を示しています。
- それぞれのコードは、異なる方法で数字を抽出していますが、いずれも有効な方法です。
- どの方法を使用するかは、状況に応じて選択する必要があります。
- サンプルコードは、あくまでも一例です。状況に応じてコードを修正する必要があります。
- 文字列から数字を抽出する方法は他にもあります。
- より詳細な情報については、JavaScriptのリファレンスドキュメントを参照してください。
JavaScriptで文字列から数字を抽出するその他の方法
toLocaleString()
メソッドは、数値をロケール固有の形式に変換します。このメソッドを使用して、小数点以下の桁数を指定したり、区切り文字を挿入したりすることができます。
const str = "123.456";
const number = parseFloat(str);
const formattedNumber = number.toLocaleString('ja-JP', {maximumFractionDigits: 2});
console.log(formattedNumber); // 123.46
Bitwise演算子を使用して、文字列を数値に変換することができます。この方法は、比較的低速ですが、シンプルなコードで記述することができます。
const str = "123";
let number = 0;
for (let i = 0; i < str.length; i++) {
const char = str[i];
const digit = char.charCodeAt() - '0';
number = number * 10 + digit;
}
console.log(number); // 123
eval()
関数を使用して、文字列を式として評価することができます。この方法は、非常に強力ですが、セキュリティ上のリスクがあるため、一般的には推奨されていません。
const str = "123";
const number = eval(str);
console.log(number); // 123
注意事項:
- 上記の方法は、いずれも状況によっては有効ですが、パフォーマンスやセキュリティ上の問題がある可能性があります。
- 文字列から数字を抽出する場合は、常にparseInt()関数またはparseFloat()関数を使用することをお勧めします。
JavaScriptで文字列から数字を抽出する方法は様々です。状況に応じて適切な方法を選択することが重要です。
javascript regex string