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

manipulate text and number

مغلق
بدأه TheNewLeader في 8 مايو 2007 · 7 رد · 782 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي سوال

عندي ملف في كلمات تفصل بين كل كلمة واخرى /

مثال

ahmed/ name live/verb Amman/Country

ما اريد عمله هو

كيف لي ان اضع ارقام بعد الاصناف ثم لا اغير هذه الارقام

اقصد

ahmed/ name 1 live/verb 2 Amman/Country 3

حيث انيي لاحقا ساخذ فقط الاصناف types واحولها الى ارقام تبعا لنوعها

اقصد

name 1 verb 2 Country 3

تصبح

50 1 20 2 100 3

يعني ابدا بجمله كلها text

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

ثم اعمل تحويل للاصناف types اللي عندي ولا اغير ترقيم الكلمات السابق

هل ممكن ان تساعدوني في ذلك

جزاكم الله خيرا

#2

دعوني اغير السؤال

لو كان عندي الاصناف types

name verb Country

واريد ان ادخل الارقام عليهم لتعداد الكلمات

name 1 verb 2 Country 3

ثم حين احول الاصناف الى ارقام لا اريد ان اتدخل في الترقيم السابق

50 1 20 2 100 3

فما العمل؟؟

#3

ممكن أن تدرج السؤال كما هو من الكتاب، سواء باللغه العربيه أو الانجليزيه، و في مثل هذه الحاله يفضل الانجليزيه :D

#4

لتقسيم النص لكلمات بسهولة استخدم StringTokenizer وهو موجود في util

بعد ذلك قم بإنشاء صف مختص، يحفظ الكلمة، وشعاع داخلي يحفظ مواقع ورود الكلمة. ثم شعاع يحفظ الكلمات المستقلة.

ولكن كل كلمة تتم قرائتها يجب التأكد من أنها جديدة أو مستخدمة، فإذا كانت جديدة أنشئ الحقول اللازمة، وإذا مستخدمة أضف موقعها في الشعاع المناسب.

لمقارنة كلمة مع أخرى استخدم وظائف ال string فهي قوية.

أخيرا، يمكن بهذا الأسلوب أن تنشئ ملف نصي ذو حجم صغير لأنه أسلوب لضغط البيانات لأنه يستعيض عن كلمات بأرقام أصغر منها.

هذا ملخص سريع، عليك قراءة توثيق جافا للمسائل المذكورة.

#5

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

if i have the following

name 30 CS 80 county 5555

after i did the stringTokenizer

i want to check

if digit

then

else

but when i tried the

str.isDigit(str)//where str is the string tokenz but i wont work

what is the reason

#6

اهلاً أخي ، من زمان عن اسئلتك

ان كنت نصيحتي انصحك بأن تتعلم regular expression regex

خاصة greedy quantifier

فهي ماتحتاجه في مثل هذه الأمور ،

مثلاً ان كنت تريد الارقام فقط تستخدم \\d ،

إليك مثال للحصول على الاحرف اكثر من حرف :

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class A{
	public static void main(String ... args){
		Pattern p = Pattern.compile("[a-zA-Z]*");
		Matcher m=p.matcher("name 30 CS 80 county 5555");
		while(m.find())
			System.out.print(m.group()+" ");
	}
}
#7

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

هلا والله اخوي عيسى

يا اخي ما فهمت شي من اللي كتبته انا كنت انتظر استخدام حاجات بسيطة

مثل نعمل toknizer and use Integer.parseInt

بس ما عرفت كيف اخلي شرط

اقصد

لو كان الTOKEN

الحالي عبارة عن رقم اعمل شي

ولو كان عبارة عن سترينج اعمل شي ثاني

حجرب الكود اللي تفضلت به

واحاول افهمه

if ( Integer.parseInt(S)==Integer )

#8

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

اخوي عيسى

جربت الكود مالك طلع لي بس الكلمات

وانا ابغي احافظ على السطر او الجملة مثل ما هي

يعني لو كانت

name 30 CS 80 county 5555

تصير بعد ان اضع لكل نوع رقم معين

5555 11 80 433 30 67

يعني هو لما يعرف انه التوكن الحالي رقم نزله مثل ما هو لو عباره عن سترينج حوله

طريقة التحويل عندي وتشتغل

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

عملتif ( Integer.parseInt(S()==

لكن ما اعرف كيف اقوله == رقم اي رقم

بارك الله فيك

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

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