TypeScriptの数値判定方法
TypeScriptで文字列が数値かどうか判定する
TypeScriptでは、文字列が数値かどうかを判定する方法はいくつかあります。以下はそのうちのいくつかです。
isNaN()関数を使用する
- ただし、空文字列や空白文字列は数値として扱われるため、注意が必要です。
isNaN()
関数を使用して、数値でない場合にtrue
を返します。
function isNumeric(value: string): boolean {
return !isNaN(Number(value));
}
const str1 = "123";
const str2 = "abc";
const str3 = "";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // true (注意: 空文字列は数値として扱われる)
正規表現を使用する
- より厳密なチェックが可能です。
- 正規表現を使用して、数値のパターンにマッチするかを判定します。
function isNumeric(value: string): boolean {
return /^\d+$/.test(value);
}
const str1 = "123";
const str2 = "abc";
const str3 = "";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // false
parseInt()関数を使用する
- ただし、小数点を含む場合は正しく判定できません。
parseInt()
関数を使用して、文字列を整数に変換し、変換された値が元の文字列と一致するかを判定します。
function isNumeric(value: string): boolean {
const parsedInt = parseInt(value);
return !isNaN(parsedInt) && value === parsedInt.toString();
}
const str1 = "123";
const str2 = "abc";
const str3 = "3.14";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // false
function isNumeric(value: string): boolean {
return !isNaN(Number(value));
}
const str1 = "123";
const str2 = "abc";
const str3 = "";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // true (注意: 空文字列は数値として扱われる)
- しかし、
str3
は空文字列であり、数値に変換すると0
となるため、true
が返されます。 - この例では、
str1
は数値に変換できるためtrue
が返され、str2
は数値に変換できないためfalse
が返されます。 NaN
は「Not a Number」の略で、数値ではない値を表します。isNumeric
関数は、引数として受け取った文字列value
を数値に変換し、その結果がNaN
でないかどうかを判定します。
function isNumeric(value: string): boolean {
return /^\d+$/.test(value);
}
const str1 = "123";
const str2 = "abc";
const str3 = "";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // false
- この例では、
str1
は数値のみで構成されているためtrue
が返され、str2
とstr3
は数値以外の文字が含まれているためfalse
が返されます。 test()
メソッドは、正規表現が文字列にマッチするかどうかを判定します。^\d+$
は、文字列の先頭から末尾まで数字のみが含まれていることを表します。isNumeric
関数は、正規表現^\d+$
を使用して、文字列が数値のみで構成されているかどうかを判定します。
function isNumeric(value: string): boolean {
const parsedInt = parseInt(value);
return !isNaN(parsedInt) && value === parsedInt.toString();
}
const str1 = "123";
const str2 = "abc";
const str3 = "3.14";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
console.log(isNumeric(str3)); // false
str3
は小数点を含むため、整数に変換できずfalse
が返されます。str2
は整数に変換できないためfalse
が返されます。- この例では、
str1
は整数に変換でき、元の文字列と一致するためtrue
が返されます。 - 変換された値が
NaN
でない場合、かつ元の文字列と一致する場合に、文字列は数値であると判定されます。 parseInt()
関数は、文字列の先頭から数値部分を解析し、整数に変換します。
Number.isInteger()関数を使用する
- 小数点を含む場合は
false
を返します。 Number.isInteger()
関数を使用して、文字列が整数かどうかを判定します。
function isNumeric(value: string): boolean {
const parsedNumber = Number(value);
return !isNaN(parsedNumber) && Number.isInteger(parsedNumber);
}
const str1 = "123";
const str2 = "3.14";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // false
- 小数点を含む場合でも正しく判定できます。
function isNumeric(value: string): boolean {
const parsedFloat = parseFloat(value);
return !isNaN(parsedFloat) && value === parsedFloat.toString();
}
const str1 = "123";
const str2 = "3.14";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // true
カスタム関数を使用する
- 独自の関数を作成して、より柔軟な判定を行うことができます。
function isNumeric(value: string): boolean {
// 独自の判定ロジックを実装
return /^\d+(\.\d+)?$/.test(value);
}
const str1 = "123";
const str2 = "3.14";
const str3 = "abc";
console.log(isNumeric(str1)); // true
console.log(isNumeric(str2)); // true
console.log(isNumeric(str3)); // false
typescript