آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

به چه طریق می توان به یک کاراکتر فارسی یک عدد نسبت داد ?

developer1981  11 سال پیش  11 سال پیش
+2 0

به عنوان مثال می خواهم به تمام حروف الفبای فارسی عدد نسبت بدهم

مثلا به حرف ب عدد 10 به حرف پ عدد 43 به حرف د عدد 100 و غیره . وقتی این حروف رو به عنوان کاراکتر معرفی مکنم یعنی داده ای از نوع char به نظر میرسه که قبول نمیکنه . 

هدف من در کل جدا سازی حروف از کلمات و تبدیل تک تک حروف به عددی هست که از قبل نسبت داده شده .

مثلا کلمه سیب را که کاربر تایپ کرده گرفته و  با فرض اینکه از قبل حروف مقادیر عددی گرفته اند (مثلا 30 برابر س و 20 برابر ی و 261 برابر ب باشد  ) به من مقادیر عددی کلمه تایپ شده را بدهد. یک کلمه را از edit text گرفته و در متغیری مقدار عددی آن را نشان دهد مثلا  حاصل جمع آن کلمه را.         

 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
Hossein Kurd  11 سال پیش
+1 0

همه رو طبق ترتیبی که می خواهی بریز توی یک آرایه بعد کاراکتر مورد نظر رو پیدا کن و اندیس رو + 1 نمایش بده( اندیس آرایه از 0 شروع می شه )

یا Array List از نوع object تعریف کن ، حالا این object چیه؟ :

public MyItem{

public char mChar;
public int mNumber;

}

و ArrayList :

ArrayList<MyItem> myList = new ArrayList<MyItem>();

for (int i = 0 ; i<32; i++){

MyItem item = new Item(); item.mChar = 'ب';
item.mNumber = 1;

myList.add(item);
Log.i("LOG" , "Array Size : " + myList.size() + " , char : " + item.mChar + " , numer : " + item.mNumber);

}


خیلی روی نوشتن get set های MyItem حساس نبودم چون نخواستم شلوغ بشه و نتیجه دادن مهم بود

پاسخ به سوال 
developer1981  11 سال پیش
0 0

حسین جان ممنون از توضیحاتت ولی من قصد ندارم به ترتیب عدد اختصاص بدم می خوام بتونم به هر حرف یه عدد خاص که در طول برنامه ثابت است اختصاص بدم . مثلا به "ن" عدد 50 اختصاص بدم و تو کل برنامه ثابت باشه. یا مثلا به "ظ" عدد 800. بعد بتونم بر اساس حروفی که گرفته میشه از کاربر عدد متناظرش رو به من بده 

0 0
خب روش دوم رو انجام بده (11 سال پیش)
0 0
میشه واسه یک کاراکتر یه مثال بزنی مثلا به کاراکتر "ی" عدد 10 رو تخصیص بده که برای بقیه هم همین کار و بسط بدم (11 سال پیش)
0 0
از بچه ها کسی نظر دیگه ای نداره ؟ لطفا راهنمایی کنید ممنون (11 سال پیش)
0 0
اول شما همه رو توی آرایه به صورت دستی ادد می کنی سپس هر جا که خواستی استفاده می کنی (11 سال پیش)
0 0
تا اونجايي كه من ميدونم تو برنامه نويسي حالا به هر زباني، هر حرف يا كاراكتري يه كد اسكي معادل خودش رو داره ( كه يك عدد هست) كه استاندارد هم هست. و مسلما جاوا دستوري داره كه كد اسكي يك حرف رو برگردونه منتهي من هنوز توي جاوا مسلط نيستم كه كدش رو بگم. چرا از كد اسكي معادل هر كاراكتر استفاده نميكني؟ (11 سال پیش)
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+1 0

کد Hexadecimal میتونه الگوی خوبی برای شما باشه ، به این دلیل !

اگر شما هر کارکتر رو با یک مقدار عددی نشون بدید اون وقت احتمالا رشته ای با اشکال زیر خواهید داشت

 A - > 1 , Z - > 29 , a - > 30 , ...
30,11,22,44

یعنی باید از جداکننده استفاده کنید و رشته طولانی میشه و کاملا واضح هست که چه اتفاقی افتاده 

اما در الگوریتمی مثل Hex ما داریم

0 1 2 3 4 5 6 7 8 9 A B C D E F

و حالا شما می تونید داشته باشید

0 1 2 3 4 5 6 7 8 9 A B C D E F .... Z a b c d e f ... z

در این حالت هر کارکتری انگلیسی رو به کارکتر خاصی در فارسی نسبت بدید ، اعداد هم میتونید به همون شکل یا الگوی خاصی ذخیره کنید ، پس تا وقتی کسی آرایه ی کلید رو نداشته باشه ، نمیتونه به راحتی متن شما رو دیکد کنه ، مگر با روش های حرفه ای (اما سنتی رمزنگاری  ) که یکی از معروف ترین شون روش تعداد تکرار هست که معمولا 90 درصد رشته رو دیکد میکنه !

به نظر من بازم روش جالبی هست :)

0 0
ایشون می خوان عدد انتخابی خودشون رو قرار بدن و نه اعداد اینچنینی وگرنه از همون آرایه ساده استفاده می کردن (11 سال پیش)
پاسخ به سوال 
mehrlog  11 سال پیش
+3 0

با سلام بهترین روش استفاده از dictionary میباشد.

 Map<String,int> dictionary = new HashMap<String,int>();

dictionary.put("key", value);

int value = dictionary.get("key");

//------------------

dictionary.put("ا", value);
dictionary.put("ب", value);
dictionary.put("پ", value);
dictionary.put("ت", value);
dictionary.put("ث", value);
dictionary.put("ج", value);

// به جاي value ها مقدار عددي را قرار بده

int value = dictionary.get("ب");


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .