NaN 또는 IsNumeric에 해당하는 C #은 무엇입니까?
입력 문자열에 숫자 값이 포함되어 있는지 (또는 반대로 숫자가 아님)를 테스트하는 가장 효율적인 방법은 무엇입니까? 나는 Double.Parse
또는 정규식을 사용할 수 있다고 생각 하지만 (아래 참조) 자바 스크립트 NaN()
또는 IsNumeric()
(그 VB입니까, 기억할 수 없습니까?) 와 같이 이것을 수행하는 방법이 있는지 궁금합니다 .
public static bool IsNumeric(this string value)
{
return Regex.IsMatch(value, "^\\d+$");
}
정규식 오버 헤드가 없습니다.
double myNum = 0;
String testVar = "Not A Number";
if (Double.TryParse(testVar, out myNum)) {
// it is a number
} else {
// it is not a number
}
덧붙여서 GUID를 제외한 모든 표준 데이터 유형은 TryParse를 지원합니다.
업데이트
secretwep는 "2345"값이 위의 테스트를 숫자로 통과 할 것임을 나타냅니다. 그러나 문자열 내의 모든 문자가 숫자인지 확인해야하는 경우 다른 접근 방식을 취해야합니다.
예 1 :
public Boolean IsNumber(String s) {
Boolean value = true;
foreach(Char c in s.ToCharArray()) {
value = value && Char.IsDigit(c);
}
return value;
}
또는 조금 더 멋지고 싶다면
public Boolean IsNumber(String value) {
return value.All(Char.IsDigit);
}
나는 이것과 같은 것을 선호한다. 그것은 당신이 무엇 NumberStyle
을 테스트 할지 결정할 수있게 해준다 .
public static Boolean IsNumeric(String input, NumberStyles numberStyle) {
Double temp;
Boolean result = Double.TryParse(input, numberStyle, CultureInfo.CurrentCulture, out temp);
return result;
}
이전 정답뿐만 아니라 아마 "숫자가 아님"의 일반적인 사용에 비수 (NaN) 인 것을 지적 가치가 없는 숫자 값으로 평가 될 수없는 문자열에 해당. NaN은 일반적으로 결과가 정의되지 않은 "불가능"계산의 결과를 나타내는 데 사용되는 숫자 값으로 이해됩니다. 이 점에서 Javascript 사용이 약간 오해의 소지가 있다고 말하고 싶습니다. C #에서 NaN은 단일 및 이중 숫자 형식의 속성으로 정의되며 0으로 0으로 다이빙 한 결과를 명시 적으로 참조하는 데 사용됩니다. 다른 언어에서는이를 사용하여 다른 "불가능"값을 나타냅니다.
나는 이것이 확장과 람다 예제를 통해 여러 가지 방법으로 대답되었지만 가장 간단한 솔루션을 위해 두 가지를 조합 한 것으로 알고 있습니다.
public static bool IsNumeric(this String s)
{
return s.All(Char.IsDigit);
}
또는 Visual Studio 2015 (C # 6.0 이상)를 사용하는 경우
public static bool IsNumeric(this String s) => s.All(Char.IsDigit);
한 줄에 멋진 C # 6. 물론 이것은 숫자 만 테스트하기 때문에 제한적입니다.
사용하려면 문자열을 가지고 다음과 같이 메소드를 호출하십시오.
bool IsaNumber = "123456".IsNumeric();
예, IsNumeric은 VB입니다. 일반적으로 사람들은 약간 어색하지만 TryParse () 메서드를 사용합니다. 제안했듯이 언제든지 직접 작성할 수 있습니다.
int i;
if (int.TryParse(string, out i))
{
}
나는 확장 방법을 좋아하지만 가능하면 예외를 던지는 것을 좋아하지 않습니다. 여기에서 2 개의 답변 중 가장 좋은 확장 방법을 선택했습니다.
/// <summary>
/// Extension method that works out if a string is numeric or not
/// </summary>
/// <param name="str">string that may be a number</param>
/// <returns>true if numeric, false if not</returns>
public static bool IsNumeric(this String str)
{
double myNum = 0;
if (Double.TryParse(str, out myNum))
{
return true;
}
return false;
}
C #에서 Visual Basic 함수를 계속 사용할 수 있습니다. 당신이해야 할 유일한 일은 아래 표시된 내 지침을 따르는 것입니다.
- Add the reference to the Visual Basic Library by right clicking on your project and selecting "Add Reference":
Then import it in your class as shown below:
using Microsoft.VisualBasic;
Next use it wherever you want as shown below:
if (!Information.IsNumeric(softwareVersion)) { throw new DataException(string.Format("[{0}] is an invalid App Version! Only numeric values are supported at this time.", softwareVersion)); }
Hope, this helps and good luck!
VB has the IsNumeric
function. You could reference Microsoft.VisualBasic.dll
and use it.
Simple extension:
public static bool IsNumeric(this String str)
{
try
{
Double.Parse(str.ToString());
return true;
}
catch {
}
return false;
}
public static bool IsNumeric(string anyString)
{
if (anyString == null)
{
anyString = "";
}
if (anyString.Length > 0)
{
double dummyOut = new double();
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US", true);
return Double.TryParse(anyString, System.Globalization.NumberStyles.Any, cultureInfo.NumberFormat, out dummyOut);
}
else
{
return false;
}
}
Maybe this is a C# 3 feature, but you could use double.NaN
.
Actually, Double.NaN
is supported in all .NET versions 2.0 and greater.
I was using Chris Lively's snippet (selected answer) encapsulated in a bool function like Gishu's suggestion for a year or two. I used it to make sure certain query strings were only numeric before proceeding with further processing. I started getting some errant querystrings that the marked answer was not handling, specifically, whenever a comma was passed after a number like "3645," (returned true). This is the resulting mod:
static public bool IsNumeric(string s)
{
double myNum = 0;
if (Double.TryParse(s, out myNum))
{
if (s.Contains(",")) return false;
return true;
}
else
{
return false;
}
}
I have a slightly different version which returns the number. I would guess that in most cases after testing the string you would want to use the number.
public bool IsNumeric(string numericString, out Double numericValue)
{
if (Double.TryParse(numericString, out numericValue))
return true;
else
return false;
}
참고URL : https://stackoverflow.com/questions/437882/what-is-the-c-sharp-equivalent-of-nan-or-isnumeric
'programing' 카테고리의 다른 글
현재 실행 가능한 파일 이름을 어떻게 찾습니까? (0) | 2020.08.21 |
---|---|
일부 매개 변수를 전달하여 인 텐트를 시작하는 방법은 무엇입니까? (0) | 2020.08.21 |
jquery를 사용하여 텍스트 상자를 비활성화 하시겠습니까? (0) | 2020.08.21 |
Hibernate 문제- "매핑되지 않은 클래스를 대상으로하는 @OneToMany 또는 @ManyToMany 사용" (0) | 2020.08.21 |
Android java.lang.VerifyError? (0) | 2020.08.21 |