كيفية منع جميع الأحرف والسماح للأرقام فقط
السلام عليكم ورحمه الله وبركاتة
اخواني عندي Text وحاب اني أخليه للأرقام فقط
بمعنا انه يسمح للأرقام فقط اما الأحرف يعطي تنبية
وشكراً
الإجابة الصحيحة
اعتذر على التاخير في الرد ما انتبهت للسؤال الا دوبي
عموما الطريقة جدا سهله
وهيا تعتمد على استخدام 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 يضاف إلية الأرقام او الأحرف بواسطة شغلة ثانية وليس بواسطة المستخدم
وعليكم السلام ورحمة الله وبركاته
انا ماني خبير في لغة swift بس ليش ماتستخدم مكتبة Validator بحثت في github وحصلت هالمكتبات شوفها ويارب تفيدك وحدة منهم
اعتذر على التاخير في الرد ما انتبهت للسؤال الا دوبي
عموما الطريقة جدا سهله
وهيا تعتمد على استخدام 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
مع ظهور رسالة اذا يحتوي على نص
لتحميل المشروع من هنا
يعطيك الف عافية اخوي باسل افدتني كثير بخصوص الموضوع واتمنى الاطلاع على هاذا السؤال و المساعدة .
وشاكر لك و للإخوة المشاركين.
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !