الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

validation String

مغلق
بدأه mohammad_Awadat في 21 يوليو 2007 · 5 رد · 1,405 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

hi

i want to make validation on text to contain only letters (arabic letters)

thx

#2

كان عندي اعتقاد انو لي بكنو مشرفين او عاملين منتديات عبارة عن ناس عويات

و لحمد لله تأكدة انو عن جد انتو ناس ما ألكو دخل في شي اسمو برمجة حمد لله عمري ما سألة و لاقي جواب تعرفو ليش لأنو ناس مشرفين ما لهم دخل بالقصة كلها

شفولكو منتديات شات على لكام بتوفي معكو أكثر

#3

ماشاء الله صاير ( نكوتي ) الولد :lol:

#4

سيادتك لو بحثت فى الجوجل هتلاقى اللى انت عاوزه انما انت مش بتبحث اصلا وجاى تشتم هنا

وبعدين محدش قال ان المنتدى هنا كل اللى فيه عباقرة ويعرفوا كل شئ , حتى لو محدش رد عليك ده مش سبب يخليك تقول الكلام ده ولازم يكون فيه شوية احترام

#5

هو طلبه بسيط جدا لو شغل مخه شوية هيجيبه

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

بس أنا قلت ي الآخر ان أي معلومة بتتحط في أي موضوع بتفيد أي حد يدخل على الموضوع بعد كده، فقلت أحط الرد مش علشانه بس علشان اللي هيخش على الموضوع من جوجل أو من أي حته يلاقي المعلومة كامة.

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

وداه الكود بتاعها:

	public static void main(String[] args) {
		String arabicString = "عمر";
		System.out.println(isArabicString(arabicString));
	}

	static char [] arabicChars = {
		'ء',
		'آ', 
		'أ', 
		'ؤ', 
		'إ', 
		'ئ', 
		'ا', 
		'ب', 
		'ة', 
		'ت', 
		'ث', 
		'ج',
		'ح',
		'خ',
		'د',
		'ذ', 
		'ر', 
		'ز', 
		'س', 
		'ش',
		'ص', 
		'ض', 
		'ط', 
		'ظ', 
		'ع', 
		'غ', 
		'ف', 
		'ق', 
		'ك', 
		'ل', 
		'م', 
		'ن',
		'ه', 
		'و', 
		'ى', 
		'ي' 
	};


	/**
	 * @param arabicString 
	 * 			the String to be tested if it was arabic
	 */
	private static boolean isArabicString(String arabicString) {
		boolean res = true;
		for(int i=0; i<arabicString.length(); i++){
			if(!isArabicLetter(arabicString.charAt(i))){
				res = false;
			}
		}
		return res; 
	}

	/**
	 * @param c
	 * 		is this character arabic
	 * @return true if the paramerer is arabic character
	 */
	private static boolean isArabicLetter(char c) {
		boolean res = false;
		for(int i=0; i<arabicChars.length; i++){
			if(arabicChars==c){
				res = true;
			}
		}
		return res;
	}

طبعا مشكلة الحل داه انك هتعمل 2 لوب وداه مش هو لحل المثالي انما لو عرفنا ان الحروف العربي الحاجات العربي كلها اليونيكود بتاعها ليه رينج ثابت وهو من 0600 إلى 06FF

يبقى كده هي لوب واحدة ممكن تفي بالغرض ومش محتاج ليستة بالحروف العربي

طبعا الرينج الي أنا قلته داه شامل الحروف والأرقام العربي مش الحروف بس

علشان كده هنستخدم Method موجودة في ال Charachter Class اسمها isLetter بترجع true فقط في حالة الحروف

أرجو ن أكون قد أوضحت الصورة

#6

للعلم فقط الكود التالي يفي بالغرض

	public static boolean isCharactersArabic(String text){
		return isCharactersArabic(text, false);
	}

	public static boolean isCharactersArabic(String text, boolean isMoreWord){
		StringBuffer string =new StringBuffer();
//		string.append("([ء-ي~-ْ]+\\s?)");
		string.append("([0-9ء-ي~-ْ]+\\s?)");
		if(isMoreWord)string.append("{1,}");
		return text.matches(string.toString());
	}

هذا الموضوع مغلق.

مواضيع مشابهة