اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

هنالك عدة طرق لاختبار ما إذا كانت السلسلة نصية تحتوي على عدد صحيح أو لا في روبي وأبسط مثال لمعرفة ذلك هي عن طريق استخدام التعابير النمطية كما في المثال التالي الذي قمنا فيه بإنشاء صنف بداخله دالة الاختبار:

class String
    def is_i?
       !!(self =~ /\A[-+]?[0-9]+\z/)
    end
end

كما يمكنك كتابة المثال السابق بطريقة أخرى كما في هذا المثال الثاني:

class String
    def is_i?
       /\A[-+]?\d+\z/ === self
    end
end

وفي حالة ما أردت أن تتأكد من الأرقام الموجبة فقط يمكنك استعمال هذا المثال:

  if !/\A\d+\z/.match(string_to_check)
      #Is not a positive number
  else
      #Is all good ..continue
  end
  • 0
نشر

يمكنك إنجاز ذلك كالتالي:

def is_number? string
  true if Float(string) rescue false
end

الاستدعاء:

my_string = '12.34'
is_number?( my_string )
# => true

أيضًا يمكنك أن تعرّف هذه الدالة، بحيث تكون قادراً على استدعائها مباشرة من خلال الصنف String كالتالي:

class String
  def is_number?
    true if Float(self) rescue false
  end
end

بالتالي يكون استدعائها بالشكل:

my_string.is_number?
# => true

أو يمكنك تعريفها بالشكل إذا كنت تريد التعامل مع الأعداد الصحيحة فقط:

def is_num?(str)
  !!Integer(str)
rescue ArgumentError, TypeError
  false
end

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...