cum se verifică dacă caracterul este un număr întreg (Programare, C#)

întunecare050 a intrebat.

Caut o funcție care să verifice caracterul dacă este un întreg și să facă ceva este așa.

char a = '1';

if (Function(a))
{
  do something
}

Comentarii

  • Notă laterală: ar trebui să vă gândiți dacă aveți nevoie de „interger” (ca secvență de cifre – există câteva caractere de acest fel), „digit” (0-9 în mai multe limbi) sau „a number” (1/2,…) -…  > Por Alexei Levenkov.
9 răspunsuri
user586399

Utilizați System.Char.IsDigit metoda

Comentarii

  • +1 atât la IsDigit, cât și la IsNumber. Rețineți că niciuna dintre ele nu garantează că caracterul este „întreg”, deoarece IsDigit înseamnă pur și simplu că este o cifră a unui număr întreg potențial mai lung, iar IsNumber ar putea fi float (adică 1/2). –  > Por Alexei Levenkov.
  • IsDigit acoperă 0-9 și echivalentele din alte seturi de caractere și este întotdeauna un număr întreg pentru un singur caracter (pentru un șir mai lung, utilizați Integer.TryParse). IsNumber returnează true pentru 0-9, precum și pentru unele caractere Unicode mai interesante din grupurile „Number, Other” și „Number, Letter”, cum ar fi ½ (care reprezintă 1 caracter). fileformat.info/info/unicode/category/No/list.htm –  > Por lgaud.
  • IsDigit va returna true pentru toate aceste caractere; în afară de 0-9, acestea nu vor fi analizate ca numere întregi prin int.TryParse cu setările implicite de cultură pe o mașină în limba engleză – fileformat.info/info/unicode/category/Nd/list.htm –  > Por lgaud.
D Stanley

Dacă vreți doar pur și simplu 0-9 cifre, utilizați

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

IsNumeric și IsDigit ambele returnează true pentru unele caractere din afara intervalului 0-9:

Diferența dintre Char.IsDigit() și Char.IsNumber() în C#

lhan

Integer.TryParse funcționează bine.

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

Comentarii

  • IsNumeric returnează true pentru caracterele care nu sunt cifre: stackoverflow.com/questions/228532/… –  > Por D Stanley.
  • Mulțumesc pentru informația despre IsNumber, nu știam de asta. Voi elimina acest lucru din răspunsul meu. Știți dacă Integer.TryParse face același lucru pentru caracterele fără cifre? –  > Por lhan.
  • Nu am încercat niciodată, dar cu o cultură americană bănuiesc că ar lua în considerare doar 0-9. –  > Por D Stanley.
A.Clymer

The bool Char.IsDigit(char c); Method ar trebui să funcționeze perfect pentru acest caz.

char a = '1';

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

Rahul Tripathi

Încercați să utilizați System.Char.IsDigit metoda.

Aamir

Încercați Char.IsNumber. Documentația și exemplele pot fi găsite aici

Corith Malin

Poate fi mai bine să folosiți doar o instrucțiune switch. Ceva de genul:

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

Acest lucru va funcționa atâta timp cât căutați doar caracterele 0-9. Orice altceva mai mult decât atât (să zicem „10”) ar fi un șir și nu un caracter. Dacă încercați doar să vedeți dacă o intrare este un întreg și dacă intrarea este un șir de caractere, puteți face astfel:

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

Lê Vũ Huy

Cel mai simplu răspuns:

char chr = '1';
char.isDigit(chr)

FredyWenger

Trebuie să verific primele până la caractere ale unui șir de caractere și dacă al treilea caracter este numeric și să o fac cu MyString.All(char.IsDigit):

if (cAdresse.Trim().ToUpper().Substring(0, 2) == "FZ" & cAdresse.Trim().ToUpper().Substring(2, 1).All(char.IsDigit))

Tags: