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

مشکل در تبدیل اعداد تاریخ انگلیسی به فارسی (حل شد)

mosafer  9 سال پیش  9 سال پیش
0 0

سلام دوستان

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

static char[] PersianChars = {'٠','١','٢','۳','۴','۵','۶','٧','٨','٩'};

public static String En2Per (String str) { //تبدیل رقم های انگلیسی به رقم فارسی در فونت فارسی

StringBuilder builder = new StringBuilder();
for(int i=0; i<str.length(); i++) {
if(Character.isDigit(str.charAt(i))) {
builder.append(PersianChars[(int)(str.charAt(i))-48]);
} else {
builder.append(str.charAt(i));
}
}
return builder.toString();
}

 

ولی هر زمان که بخوام تاریخ رو که با اعداد انگلیسی هست رو به فارسی تبدیل کنم جای ماه و روز تغییر میکنه! این مشکل زمانی رخ میده که ماه و روز جز اعداد دهگان باشند. مثلا تاریخ :

 1395-06-02 

به  " 02 - 06 - 1395 " به خوبی تبدیل میشه ولی تاریخ :

 1395-11-29

به این شکل  11 - 29 - 1395 تبدیل میشه!

همونجوری که میبینید جای ماه و روز عوض شد چرا؟

+1 0
Split کن مقدار String رو بعد آرایه [] رو که میگیری index های 0 و 1 و 2 رو جدا جدا تغییر بده و دوباره کنار هم بزار (9 سال پیش)
+2 0
الگوریتم درستی هست . آرایه مورد نظر را به درستی مقدار دهی نکردید باید اشکال از کاراکتر هایی باشه که وارد کردین . دوباره مقدار دهی کنید . (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
سهرابیان  9 سال پیش
+2 0

الگوریتم شما رو امتحان کردم تا از کامنتی که برای شما درج کردم مطمئن بشم و تنها مشکل الگوریتم شما این بود که آرایه را به درستی مقدار دهی نکردید از method زیر استفاده کنید :

 
public String numbersEnglishToPersian(String str) {
char[] numbersPersian = {'۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'};

StringBuilder builder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
builder.append(numbersPersian[(int) (str.charAt(i)) - 48]);
} else {
builder.append(str.charAt(i));
}
}
return builder.toString();
}
 
 
0 0
واقعا ممنونم. درست گفتی. تشکر (9 سال پیش)

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