به چه طریق می توان به یک کاراکتر فارسی یک عدد نسبت داد ?
به عنوان مثال می خواهم به تمام حروف الفبای فارسی عدد نسبت بدهم
مثلا به حرف ب عدد 10 به حرف پ عدد 43 به حرف د عدد 100 و غیره . وقتی این حروف رو به عنوان کاراکتر معرفی مکنم یعنی داده ای از نوع char به نظر میرسه که قبول نمیکنه .
هدف من در کل جدا سازی حروف از کلمات و تبدیل تک تک حروف به عددی هست که از قبل نسبت داده شده .
مثلا کلمه سیب را که کاربر تایپ کرده گرفته و با فرض اینکه از قبل حروف مقادیر عددی گرفته اند (مثلا 30 برابر س و 20 برابر ی و 261 برابر ب باشد ) به من مقادیر عددی کلمه تایپ شده را بدهد. یک کلمه را از edit text گرفته و در متغیری مقدار عددی آن را نشان دهد مثلا حاصل جمع آن کلمه را.
همه رو طبق ترتیبی که می خواهی بریز توی یک آرایه بعد کاراکتر مورد نظر رو پیدا کن و اندیس رو + 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 حساس نبودم چون نخواستم شلوغ بشه و نتیجه دادن مهم بود
حسین جان ممنون از توضیحاتت ولی من قصد ندارم به ترتیب عدد اختصاص بدم می خوام بتونم به هر حرف یه عدد خاص که در طول برنامه ثابت است اختصاص بدم . مثلا به "ن" عدد 50 اختصاص بدم و تو کل برنامه ثابت باشه. یا مثلا به "ظ" عدد 800. بعد بتونم بر اساس حروفی که گرفته میشه از کاربر عدد متناظرش رو به من بده
کد 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 درصد رشته رو دیکد میکنه !
به نظر من بازم روش جالبی هست :)
با سلام بهترین روش استفاده از 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("ب");
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .