Soru Karakterin tam sayı olup olmadığını kontrol etme


Bir tamsayı ise karakteri kontrol edebilen bir işlev arıyorum ve bir şeyler yapın.

char a = '1';

if (Function(a))
{
  do something
}

16
2017-10-12 19:58


Menşei


Yan not: Eğer "interger" (basamaklar dizisi - bunun gibi çift karakterler var), "digit" (0-9 çoklu dilde) veya "bir numara" (1/2, ...) ihtiyacınız varsa dikkate almalısınız. ) - Alexei Levenkov


Cevaplar:


kullanım System.Char.IsDigit yöntem


31
2017-10-12 19:59



IsDigit ve IsNumber öğelerine +1. Bu karakterin ne "tamsayı" olduğunu garanti etmediğine dikkat edin, çünkü IsDigit sadece potansiyel olarak daha uzun bir tamsayıya sahip olduğu anlamına gelir, IsNumber yüzer (örn. 1/2). - Alexei Levenkov
IsDigit, diğer karakter kümelerindeki 0-9 ve eşdeğerleri kapsar ve her zaman tek bir karakter için bir tamsayıdır (daha uzun bir dize için, Integer.TryParse kullanın). IsNumber, "Number, Other" ve "Number, Letter" gibi gruplarda daha ilginç bazı Unicode karakterlerin yanı sıra 0-9 için de true değerini döndürür (bu 1 karakterdir) fileformat.info/info/unicode/category/No/list.htm - lgaud
IsDigit bu karakterlerin tümü için geçerli olacak; 0-9'dan farklı olarak İngilizce bir makinede varsayılan kültür ayarlarıyla int.TryParse aracılığıyla Integers olarak ayrılmazlar. fileformat.info/info/unicode/category/Nd/list.htm - lgaud


Sadece saf istiyorsan 0-9 rakamlar, kullan

if(a>='0' && a<='9')

IsNumeric ve IsDigit her ikisi de 0-9 aralığının dışındaki bazı karakterler için geçerli olur:

C # Char.IsDigit () ve Char.IsNumber () arasındaki fark


12
2017-10-12 20:04





Integer.TryParse iyi çalışıyor.

http://msdn.microsoft.com/en-us/library/f02979c7.aspx


5
2017-10-12 19:59



IsNumeric döndürür true rakam olmayan karakterler için: stackoverflow.com/questions/228532/... - D Stanley
İnteger.TryParse için +1 - Rab
IsNumber'in başına geldiğiniz için teşekkürler, bunun farkında değildim. Bunu cevabımdan kaldıracağım. Integer.TryParse'in basamaklı olmayan karakterler için aynı şeyi yapıp yapmadığını biliyor musunuz? - lhan
Asla denemedim, ama bir ABD kültürüyle, sadece düşünürdüm 0-9. - D Stanley


Kullanmayı deneyin System.Char.IsDigit yöntem.


2
2017-10-12 20:02





Deneyin Char.IsNumber. Dokümantasyon ve örnekler bulunabilir İşte


1
2017-10-12 20:00





bool Char.IsDigit(char c); Yöntem bu örnek için mükemmel çalışmalıdır.

char a = '1';

if (Char.IsDigit(a))
{
  //do something
}

1
2017-12-10 20:13





Sadece bir anahtar ifadesi kullanmak daha iyi olabilir. Gibi bir şey:

switch(a)
{
  case '1':
    //do something.
    break;
  case '2':
    // do something else.
    break;
  default: // Not an integer
    throw new FormatException();
    break;
}

Bu sadece 0-9 karakterleri aradığınız sürece çalışacaktır. Bundan daha fazlası ("10" deyin) bir karakter ve bir karakter olacaktır. Eğer bazı girdilerin bir tamsayı olup olmadığını ve girişin bir dize olup olmadığını görmeye çalışıyorsanız, şunları yapabilirsiniz:

try
{
  Convert.ToInt32("10")
}
catch (FormatException err)
{
  // Not an integer, display some error.
}

0
2017-10-12 20:03