Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 5.543 pregleda

Najnovija ↓

Provera numericke vrednosti u C#.Net 02.01.2007. u 18:15 · pre 241 mesec #1
Da li neko zna kako se pise naredba u C#.Net 0u za proveru numericke vrednosti?

Pandam naredbi IsNumeric u VB.Net-u samo sto mi treba ta ista naredba u C#.Net-u.

P.S
Srecna Nova godina :)
Re: Provera numericke vrednosti u C#.Net 02.01.2007. u 19:43 · pre 241 mesec #2
ako je to što mislim možeš ovako sa "is"

primjer:

Code:

int i=5;
bool rezultat=i is int; //u ovo m slucaju vratit ce true, da je recimo "i is decimal" bio bi false
Potpis
----Roberto----
Re: Provera numericke vrednosti u C#.Net 03.01.2007. u 11:32 · pre 241 mesec #4
Recimo u TextBox upisem vrednost 233.22 i naravno posto se ispita da je to ispravna numeric-ka vrednost program tece dalje. Ali
ukoliko se u TextBox upise 323.d213 program ispita, vidi da to nije numericka vrednost i obavestio nekako sistem-tj mene :) .

Ja jesam to do sada zavrsavao na jedam malo cudan nacin ali ukoliko neko zna jednu komandu koja ce da vrati True ili False ili nekkao
drugacije da obavesti da to jeste/nije numercika vrednost toi bi bilo mnogo brze i lakse.

u VB.Net-u postoji naredba
IsNumeric(txtVrednost.text) koja vraca true-jeste numericka vrednost ili false-nije numericka.

Pitanje da li ce jedna nardba da prodje jer C#.Net trazi eksplicitnu konverziju ali ako neko zna to bi bilo prava stvar.

Pozdrav
Re: Provera numericke vrednosti u C#.Net 03.01.2007. u 12:22 · pre 241 mesec #5
Ja sam to radio sa regular expression, i taj text box tj na njegov event validate staviš to i ako je to dozvoljeno prođe a ako nije odmah javi upozorenje.
Re: Provera numericke vrednosti u C#.Net 03.01.2007. u 18:43 · pre 241 mesec #7
Eto kakvi su ovi c# zealoti hehe, sve bi ucinili samo da ne dodaju reference na Microsoft.VisualBasic.dll :) :)

Namespace: Microsoft.VisualBasic
Module: Information
Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Public Function IsNumeric(ByVal Expression As Object) As Boolean


Kada se pokrene Lutz Roeder's reflector dobije se sadrzina funkcije pa prepisi u c#.


Code:
Public Shared Function IsNumeric(ByVal Expression As Object) As Boolean
      Dim num1 As Double
      Dim convertible1 As IConvertible = TryCast(Expression,IConvertible)
      If (convertible1 Is Nothing) Then
            Dim chArray1 As Char() = TryCast(Expression,Char())
            If (Not chArray1 Is Nothing) Then
                  Expression = New String(chArray1)
            Else
                  Return False
            End If
      End If
      Dim code1 As TypeCode = convertible1.GetTypeCode
      If ((code1 <> TypeCode.String) AndAlso (code1 <> TypeCode.Char)) Then
            Return Information.IsOldNumericTypeCode(code1)
      End If
      Dim text1 As String = convertible1.ToString(Nothing)
      Try 
            Dim num2 As Long
            If Utils.IsHexOrOctValue(text1, num2) Then
                  Return True
            End If
      Catch exception1 As  StackOverflowException
            Throw exception1
      Catch exception2 As  OutOfMemoryException
            Throw exception2
      Catch exception3 As  ThreadAbortException
            Throw exception3
      Catch exception7 As  Exception
            Return False
      End Try
      Return DoubleType.TryParse(text1, num1)
End Function



Mada imas onu try...catch hack foru koja je cak i dobra, jeste da imas "try" overhead

Code:

public bool IsNumeric(object o)
{
      try
      {
            Int32.Parse(o);
      }
      catch
      {
            return false;
      }
      return true;
}
Potpis
http://www.pro-transport.com - The most advanced trucking software on the market
Re: Provera numericke vrednosti u C#.Net 03.01.2007. u 19:02 · pre 241 mesec #8
Code:

    public static bool IsNumeric(string  numCandidate)
    {
        int result;
        return int.TryParse(numCandidate, out result);
    }
Potpis
http://www.vesic.org | Blog: http://www.vesic.org/blog | Programming:
http://www.vesic.org/english/blog
Re: Provera numericke vrednosti u C#.Net 04.01.2007. u 11:08 · pre 241 mesec #9
Code:

public static bool IsNumeric(object number) {
    string _number = string.Empty;

    if(number != null && number.GetType().Equals(typeof(string))) {
        _number = number.ToString();
    }
    if(_number != string.Empty)
                return char.IsNumber(_number, _number.Length - 1)? true : false;
    else return false;
}
Re: Provera numericke vrednosti u C#.Net 09.01.2007. u 12:29 · pre 241 mesec #11
Bas ste komplikatori :)

if(decimal.TryParse(tb.Text, out decimalnaVrednost))
{
// sve je proslo ok
}
else
{
// unet je pogresan karakter
}
Potpis
Every hamster has his day.
Re: Provera numericke vrednosti u C#.Net 24.01.2007. u 09:46 · pre 240 meseci #12
Iskrslo nesto pa nisam probao resenja koja ste predlozili.
Ali u narednih par dana cu da istestiram.

Hvala puno.
Re: Provera numericke vrednosti u C#.Net 05.03.2008. u 22:22 · pre 227 meseci #13
Imam i ja slican problem a necu da koristim Microsoft.VisualBasic dll :)

ovih dosta primjera sto ste pokazali covjeku ne valjaju, jer ako uradi

int.TryParse i ubaci decimal, vratice mu false, sto ce znaciti da nije integer ali je jos uvijek broj i trebalo bi da vrati True :)

evo jedne solucije koju sam ja nasao, nadam se da je dobra posto je i ja moram koristiti, probao sam u snippetu razne hackove i jos nisam uspio da je unistim... Mogu reci da je C# osiromasen sa ovom funkcijom. Imaju npr char.IsNumber(), a nemaju string.IsNumeric() mislim stvarno :) ????

Code:
public static bool IsNumeric(object Expression)
    {
      bool isNum;
      double retNum;
      isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any,System.Globalization.NumberFormatInfo.InvariantInfo, out retNum );
      return isNum;
    }


Sta mislite o tome?

Re: Provera numericke vrednosti u C#.Net 05.03.2008. u 22:42 · pre 227 meseci #14
ok evo sad sam shvatio da ce i ovo da radi kako treba

Code:

        public static void RunSnippet()
    {
        decimal result = 0;
        
        Console.WriteLine(Decimal.TryParse("45", out result));
    }


:)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme