للتحقق مما إذا كانت قيمة السلسلة لها قيمة رقمية أم لا في C#

StackOverflow https://stackoverflow.com/questions/268120

  •  06-07-2019
  •  | 
  •  

سؤال

لدي سلسلة مثل هذا

String str = "dfdsfdsf8fdfd9dfdfd4"

أحتاج إلى التحقق مما إذا كانت السلسلة تحتوي على رقم عن طريق الحلق من خلال الصفيف.

هل كانت مفيدة؟

المحلول

ماذا عن التعبير العادي:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");

نصائح أخرى

إذا كنت تبحث عن قيمة عدد صحيح يمكنك استخدامها int.tryparse:

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

للتحقق من رقم عشري ، استبدل int.tryparse عشري. تحقق من منشور المدونة هذا والتعليقات "لماذا يجب أن تستخدم TryParse () في C#" للتفاصيل.

إذا كنت بحاجة إلى أرقام عشرية ، فيمكنك بدلاً من ذلك استخدام هذا التعبير العادي:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

وأخيراً بديل آخر (إذا لم تكن دينيًا ضد VB.NET) ، يمكنك استخدام الطريقة في مساحة اسم Microsoft.visualBasic:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 

إذا كنت ستحلق على السلسلة ، فلا تستخدم int.tryparse ... هذه طريقة ثقيلة للغاية. بدلاً من ذلك ، استخدم char.isnumber () ؛

مثال:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

الجمع بين أجزاء من kamals إجابة وإجابات تريستار إعطاء ...

str.Any(char.IsNumber)

ما أعتقد أنه الطريقة الأكثر إيجازا وقابلة للقراءة ، بدلا من regex

If you're a linq junkie like me, you'd do it this way

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

in C# 2.0, try this:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
str.ToCharArray().Any(char.IsNumber)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top