문자열이 정수인지 확인하기위한 C # 테스트?
나는 무언가가 정수인지 확인하기 위해 테스트하는 C # 언어 또는 .net 프레임 워크에 내장 된 무언가가 있는지 궁금합니다.
if (x is an int)
// Do something
있을지도 모르지만 저는 프로그래밍 1 학년에 불과해서 잘 모르겠습니다.
int.TryParse 메서드를 사용합니다 .
string x = "42";
int value;
if(int.TryParse(x, out value))
// Do something
성공적으로 구문 분석되면 true를 반환하고 출력 결과는 값을 정수로 갖게됩니다.
int.TryParse와 int.Parse Regex와 char.IsNumber와 char.IsNumber 사이의 성능 비교를 본 기억이납니다. 어쨌든, 성능에 관계없이 여기에 한 가지 방법이 더 있습니다.
bool isNumeric = true;
foreach (char c in "12345")
{
if (!Char.IsNumber(c))
{
isNumeric = false;
break;
}
}
Wil P 솔루션 (위 참조)의 경우 LINQ를 사용할 수도 있습니다.
var x = "12345";
var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit);
전달 된 변수의 유형 만 확인하려면 다음을 사용할 수 있습니다.
var a = 2;
if (a is int)
{
//is integer
}
//or:
if (a.GetType() == typeof(int))
{
//is integer
}
간단합니다 ...이 코드를 사용하세요
bool anyname = your_string_Name.All(char.IsDigit);
문자열에 정수가 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
이 함수는 문자열에 0123456789 문자 만 포함되어 있는지 알려줍니다.
private bool IsInt(string sVal)
{
foreach (char c in sVal)
{
int iN = (int)c;
if ((iN > 57) || (iN < 48))
return false;
}
return true;
}
이것은 문자열이 정수가 될 수 있는지 여부를 알려주는 int.TryParse ()와 다릅니다.
예. "123 \ r \ n"은 int.TryParse ()에서는 TRUE를 반환하지만 위 함수에서는 FALSE를 반환합니다.
... 답변해야 할 질문에 따라 다릅니다.
private bool isNumber(object p_Value)
{
try
{
if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int)))
return true;
else
return false;
}
catch (Exception ex)
{
return false;
}
}
내가 얼마 전에 쓴 것. 위의 몇 가지 좋은 예이지만 2 센트 가치가 있습니다.
문자열인지 아닌지 확인하려는 경우 "out int"키워드를 메서드 호출 내에 직접 배치 할 수 있습니다. dotnetperls.com 웹 사이트에 따르면 이전 버전의 C #에서는이 구문을 허용하지 않습니다. 이렇게하면 프로그램의 줄 수를 줄일 수 있습니다.
string x = "text or int";
if (int.TryParse(x, out int output))
{
// Console.WriteLine(x);
// x is an int
// Do something
}
else
{
// x is not an int
}
If you also want to get the int values, you can write like this.
Method 1
string x = "text or int";
int value = 0;
if(int.TryParse(x, out value))
{
// x is an int
// Do something
}
else
{
// x is not an int
}
Method 2
string x = "text or int";
int num = Convert.ToInt32(x);
Console.WriteLine(num);
Referece: https://www.dotnetperls.com/parse
Maybe this can be another solution
try
{
Console.Write("write your number : ");
Console.WriteLine("Your number is : " + int.Parse(Console.ReadLine()));
}
catch (Exception x)
{
Console.WriteLine(x.Message);
}
Console.ReadLine();
I've been coding for about 2 weeks and created a simple logic to validate an integer has been accepted.
Console.WriteLine("How many numbers do you want to enter?"); // request a number
string input = Console.ReadLine(); // set the input as a string variable
int numberTotal; // declare an int variable
if (!int.TryParse(input, out numberTotal)) // process if input was an invalid number
{
while (numberTotal < 1) // numberTotal is set to 0 by default if no number is entered
{
Console.WriteLine(input + " is an invalid number."); // error message
int.TryParse(Console.ReadLine(), out numberTotal); // allows the user to input another value
}
} // this loop will repeat until numberTotal has an int set to 1 or above
you could also use the above in a FOR loop if you prefer by not declaring an action as the third parameter of the loop, such as
Console.WriteLine("How many numbers do you want to enter?");
string input2 = Console.ReadLine();
if (!int.TryParse(input2, out numberTotal2))
{
for (int numberTotal2 = 0; numberTotal2 < 1;)
{
Console.WriteLine(input2 + " is an invalid number.");
int.TryParse(Console.ReadLine(), out numberTotal2);
}
}
if you don't want a loop, simply remove the entire loop brace
참고URL : https://stackoverflow.com/questions/1752499/c-sharp-testing-to-see-if-a-string-is-an-integer
'programing' 카테고리의 다른 글
주어진 조건과 일치하는 요소의 인덱스 찾기 (0) | 2020.12.07 |
---|---|
KeyNotFoundException을 처리하는 가장 좋은 방법 (0) | 2020.12.06 |
C #에서 디렉터리 이름 바꾸기 (0) | 2020.12.06 |
Haskell ID 기능에 사용 (0) | 2020.12.06 |
순수 JPA 설정에서 데이터베이스 연결 얻기 (0) | 2020.12.06 |