programing

문자열이 정수인지 확인하기위한 C # 테스트?

nasanasas 2020. 12. 6. 21:39
반응형

문자열이 정수인지 확인하기위한 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

반응형