كيفية منع جميع الأحرف والسماح للأرقام فقط

السلام عليكم ورحمه الله وبركاتة

اخواني عندي Text وحاب اني أخليه للأرقام فقط 

بمعنا انه يسمح للأرقام فقط اما الأحرف يعطي تنبية 

وشكراً 

كلمات دليلية: c++ swift

الإجابة الصحيحة

باسل العمودي • منذ سنة

اعتذر على التاخير في الرد ما انتبهت للسؤال الا دوبي

عموما الطريقة جدا سهله

وهيا تعتمد على استخدام Regular Expression
او كما يتم تسميتها بالعربي التعبيرات المنتظمة

هو مبدا يعتمد على وضع قيود معينه Range
وراح نستخدمه هنا بحيث نجعل الـ Range
فقط ارقام انجليزية

البمدأ هذا موجود في جميع لغات البرمجة وايضا الكثير من محررات النصوص

لفهمه اكثر تحتاج تفهم معاني الرموز مع وامثله توضيحيه ومعناها
هذا الملف يشرحلك هيا بشكل واضح

عموما هنا نبغى فقط الارقام الانجليزية
فراح نستخدم هذا الـ Regular Expression

^[0-9]+$


معناه التالية

علامة ^ تعني يبدا من
الاقواس والارقام 0-9

تعني من رقم 0 الى 9
ومعناها جميع الارقام
علامة +
تعني رقم او اكثر
بمعنى 1
او 11
او 111
بدون علامة +
فقط سوف يقبل رقم بخانه وحده
وعلامة $
تعني ينتهي بـ

بوضع علامة ^
و&
سوف تجعله يقبل فقط ارقام
فاذا وجد رقم ونص ايضا سوف يرفضه !

بدون وضع ^ و&
وجود الرقم مع النص سوف يقبله !

نرجع للموضوعنا :

بإستخدامه راح تحط الـ range فقط في الارقام لا غير

اذا كيف نستخدمه في Swift ؟

لتسهيل الامر عملت Class
للـ Regular Expression

الكلاس هذا راح يسهل علينا استخدام Regular Expression
في swift
 

class RegularExpression  {
    
    func matches(for regex: String, in text: String) -> [String] {
        
        do {
            let regex = try NSRegularExpression(pattern: regex)
            let results = regex.matches(in: text,
                                        
           range: NSRange(text.startIndex..., in: text))
            
            var newString = ""
            return results.map {
                if let text2 = Range($0.range, in: text) {
                    newString = String(text[text2])
                }
                return newString
                
            }
            
        } catch let error {
            print("invalid regex: \(error.localizedDescription)")
            return []
        }
}
}


الان للاستخدام

قمت باضافة TextField
وايضا زر

وايضا قمت بعمل هذا الـ Function

 

    func checkText(string: String) -> Bool  {
        

        let matched = regularExpression.matches(for: "^[0-9]+$", in: string)
        
        
        if matched != [] {
      
            return true
         
        }else {
            
            let alert = UIAlertController(title: "Warning", message: "It Should Be Numbers Only!", preferredStyle: UIAlertControllerStyle.alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
            }))
            self.present(alert, animated: true, completion: nil)

           return false
        }
    }


}

 

المهمة الـ Function

ترسل له نص

ويقوم بالـ check عليه

اذا كان ارقام سوف يرجع قيمة true

اذا كان نص سوف يرجع false
ويظهر رسالة خطأ

بداخل function 
الـ زر

نكتب التالي

 

@IBAction func checkTapped(_ sender: UIButton) {
        
      let string =  checkText(string: textField.text!)
        
        print(string)
    }


عند ضغط الزر سوف يطبع true
اذا فقط ارقام

و false
مع ظهور رسالة اذا يحتوي على نص

لتحميل المشروع من هنا



 

الإجابات (6)

عبد الله • منذ سنة

وعليكم السلام ورحمة الله وبركاته

اخوي عبدالرحمن إن كنت تقصد مربع النص في بيئة Xcode

فمن خلال الخيارات الخاصة بال TextField على يمين الشاشة تجد خيار اسمه KeyBoard اختر منه Number Pad

بعدها سيظهر للمستخدم لوحة الأرقام فقط.

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

Ali Majrashi • منذ سنة

وعليكم السلام ورحمة الله وبركاته

انا ماني خبير في لغة swift بس ليش ماتستخدم مكتبة Validator بحثت في github وحصلت هالمكتبات شوفها ويارب تفيدك وحدة منهم

https://github.com/gkaimakas/SwiftValidatorshttps://github.com/adamwaite/Validatorhttps://github.com/SwiftValidatorCommunity/SwiftValidator

 

Jamal rshad • منذ سنة

استخدم switch

باسل العمودي • منذ سنة
الإجابة الصحيحة

اعتذر على التاخير في الرد ما انتبهت للسؤال الا دوبي

عموما الطريقة جدا سهله

وهيا تعتمد على استخدام Regular Expression
او كما يتم تسميتها بالعربي التعبيرات المنتظمة

هو مبدا يعتمد على وضع قيود معينه Range
وراح نستخدمه هنا بحيث نجعل الـ Range
فقط ارقام انجليزية

البمدأ هذا موجود في جميع لغات البرمجة وايضا الكثير من محررات النصوص

لفهمه اكثر تحتاج تفهم معاني الرموز مع وامثله توضيحيه ومعناها
هذا الملف يشرحلك هيا بشكل واضح

عموما هنا نبغى فقط الارقام الانجليزية
فراح نستخدم هذا الـ Regular Expression

^[0-9]+$


معناه التالية

علامة ^ تعني يبدا من
الاقواس والارقام 0-9

تعني من رقم 0 الى 9
ومعناها جميع الارقام
علامة +
تعني رقم او اكثر
بمعنى 1
او 11
او 111
بدون علامة +
فقط سوف يقبل رقم بخانه وحده
وعلامة $
تعني ينتهي بـ

بوضع علامة ^
و&
سوف تجعله يقبل فقط ارقام
فاذا وجد رقم ونص ايضا سوف يرفضه !

بدون وضع ^ و&
وجود الرقم مع النص سوف يقبله !

نرجع للموضوعنا :

بإستخدامه راح تحط الـ range فقط في الارقام لا غير

اذا كيف نستخدمه في Swift ؟

لتسهيل الامر عملت Class
للـ Regular Expression

الكلاس هذا راح يسهل علينا استخدام Regular Expression
في swift
 

class RegularExpression  {
    
    func matches(for regex: String, in text: String) -> [String] {
        
        do {
            let regex = try NSRegularExpression(pattern: regex)
            let results = regex.matches(in: text,
                                        
           range: NSRange(text.startIndex..., in: text))
            
            var newString = ""
            return results.map {
                if let text2 = Range($0.range, in: text) {
                    newString = String(text[text2])
                }
                return newString
                
            }
            
        } catch let error {
            print("invalid regex: \(error.localizedDescription)")
            return []
        }
}
}


الان للاستخدام

قمت باضافة TextField
وايضا زر

وايضا قمت بعمل هذا الـ Function

 

    func checkText(string: String) -> Bool  {
        

        let matched = regularExpression.matches(for: "^[0-9]+$", in: string)
        
        
        if matched != [] {
      
            return true
         
        }else {
            
            let alert = UIAlertController(title: "Warning", message: "It Should Be Numbers Only!", preferredStyle: UIAlertControllerStyle.alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
            }))
            self.present(alert, animated: true, completion: nil)

           return false
        }
    }


}

 

المهمة الـ Function

ترسل له نص

ويقوم بالـ check عليه

اذا كان ارقام سوف يرجع قيمة true

اذا كان نص سوف يرجع false
ويظهر رسالة خطأ

بداخل function 
الـ زر

نكتب التالي

 

@IBAction func checkTapped(_ sender: UIButton) {
        
      let string =  checkText(string: textField.text!)
        
        print(string)
    }


عند ضغط الزر سوف يطبع true
اذا فقط ارقام

و false
مع ظهور رسالة اذا يحتوي على نص

لتحميل المشروع من هنا



 

يعطيك الف عافية اخوي باسل افدتني كثير بخصوص الموضوع واتمنى الاطلاع على هاذا السؤال و المساعدة .

وشاكر لك و للإخوة المشاركين.

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !