이 문자열이 있으면 :
-
"abc"
=false
-
"123"
=true
-
"ab2"
=false
IsNumeric()
문자열이 유효한 숫자인지 식별 할 수 있는 명령 이 있습니까?
답변
int n;
bool isNumeric = int.TryParse("123", out n);
C # 7부터 업데이트 :
var isNumeric = int.TryParse("123", out int n);
또는 숫자가 필요하지 않으면 out 매개 변수를 버릴 수 있습니다
var isNumeric = int.TryParse("123", out _);
var에 들 각각의 유형에 의해 대체 될 수 있습니다!
답변
input
모든 숫자 이면 true를 반환합니다 . 보다 나은지 TryParse
모르지만 작동합니다.
Regex.IsMatch(input, @"^\d+$")
하나 이상의 숫자가 문자와 혼합되어 있는지 알고 싶다면 ^
+
및을 그대로 두십시오 $
.
Regex.IsMatch(input, @"\d")
편집 :
실제로 매우 긴 문자열이 잠재적으로 TryParse를 오버플로 할 수 있기 때문에 TryParse보다 낫다고 생각합니다.
답변
다음을 사용할 수도 있습니다.
stringTest.All(char.IsDigit);
그것은 반환 true
모든 자리 숫자 (하지 않는 float
) 및 false
입력 문자열은 숫자의 어떤 종류 인 경우.
참고 : stringTest
숫자 테스트를 통과하므로 빈 문자열이 아니어야합니다.
답변
이 기능을 여러 번 사용했습니다.
public static bool IsNumeric(object Expression)
{
double retNum;
bool isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
return isNum;
}
그러나 당신은 또한 사용할 수 있습니다;
bool b1 = Microsoft.VisualBasic.Information.IsNumeric("1"); //true
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("1aa"); // false
(출처 : aspalliance.com )
(출처 : aspalliance.com )
답변
아마도 C #에서 가장 좋은 옵션 일 것입니다.
문자열에 정수 (정수)가 포함되어 있는지 알고 싶은 경우 :
string someString;
// ...
int myInt;
bool isNumerical = int.TryParse(someString, out myInt);
TryParse 메소드는 문자열을 숫자 (정수)로 변환하려고 시도하며 성공하면 true를 리턴하고 해당 숫자를 myInt에 배치합니다. 그렇지 않으면 false를 반환합니다.
int.Parse(someString)
다른 응답에 표시된 대안을 사용하는 솔루션 은 효과가 있지만 예외를 던지면 비용이 많이 들기 때문에 훨씬 느립니다. TryParse(...)
버전 2의 C # 언어에 추가되었으며 그때까지는 선택의 여지가 없었습니다. 이제 당신은 : Parse()
대안을 피해야합니다 .
소수를 허용하려면 소수 클래스에도 .TryParse(...)
메소드가 있습니다. 위의 설명에서 int를 10 진수로 바꾸면 동일한 원칙이 적용됩니다.
답변
많은 데이터 유형에 대해 항상 내장 된 TryParse 메소드를 사용하여 해당 문자열이 전달되는지 확인할 수 있습니다.
예.
decimal myDec;
var Result = decimal.TryParse("123", out myDec);
결과는 다음과 같습니다 = True
decimal myDec;
var Result = decimal.TryParse("abc", out myDec);
결과는 다음과 같습니다 = False
답변
int.Parse 또는 double.Parse를 사용하지 않으려는 경우 다음과 같이 자신의 롤을 만들 수 있습니다.
public static class Extensions
{
public static bool IsNumeric(this string s)
{
foreach (char c in s)
{
if (!char.IsDigit(c) && c != '.')
{
return false;
}
}
return true;
}
}