IT story

Typescript에서 문자열이 숫자인지 확인하는 방법

hot-time 2020. 6. 25. 07:52
반응형

Typescript에서 문자열이 숫자인지 확인하는 방법


Typescript에서 isNaN은 숫자 값만 허용한다는 오류를 보여줍니다.

isNaN('9BX46B6A')

다음으로 parseFloat('9BX46B6A')평가 되기 때문에 false를 반환 합니다.9

isNaN(parseFloat('9BX46B6A'))

Visual Studio에 오류가 표시되어 계속 실행할 수 있지만 올바른 방법으로 수행하고 싶습니다.

현재이 수정 함수를 작성했습니다.

static isNaNModified = (inputStr: string) => {
    var numericRepr = parseFloat(inputStr);
    return isNaN(numericRepr) || numericRepr.toString().length != inputStr.length;
}

숫자로 된 문자열로 변환하는 방법은 함께 Number하지 parseFloat.

Number('1234') // 1234
Number('9BX9') // NaN

속기를 원하는 경우 단항 더하기 연산자를 사용할 수도 있습니다.

+'1234' // 1234
+'9BX9' // NaN

NaN을 점검 할 때주의하십시오 (운영자 ===!==예상대로 작동하지 않음 NaN). 사용하다:

 isNaN(maybeNumber) // returns true if NaN, otherwise false

rxjs 라이브러리 isNumeric 연산자를 사용하여 해결했습니다 ( rxjs / util / isNumeric 가져 오기

최신 정보

import { isNumeric } from 'rxjs/util/isNumeric';

. . .

var val = "5700";
if (isNumeric(val)){
   alert("it is number !");
}

function isNumber(value: string | number): boolean
{
   return ((value != null) && !isNaN(Number(value.toString())));
}

기존의 이미 테스트 된 솔루션을 선택합니다. 예를 들어 typescript의 rxjs는 다음과 같습니다.

function isNumeric(val: any): val is number | string {
  // parseFloat NaNs numeric-cast false positives (null|true|false|"")
  // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
  // subtraction forces infinities to NaN
  // adding 1 corrects loss of precision from parseFloat (#15100)
  return !isArray(val) && (val - parseFloat(val) + 1) >= 0;
}

rxjs / isNumeric.ts


문자열을 숫자로 구문 분석 할 수 있는지 여부는 런타임 문제입니다. Typescript는 컴파일 타임 (런타임 아님) 안전에 중점을두기 때문에이 사용 사례를 지원하지 않습니다.

참고 URL : https://stackoverflow.com/questions/23437476/in-typescript-how-to-check-if-a-string-is-numeric

반응형