PDA

View Full Version : سوال مجدد: ارایه ی کلاس و یا روشی به منظور فارسی نمودن فونت اعداد در تمام وب سایت



majid_darab
سه شنبه 22 تیر 1389, 05:25 صبح
با سلام خدمت تمامی دوستان عزیز و گرامی و عرض تبریک اعیاد اخیر :
مدتی پیش در این فروم مطالبی در مورد کلاسی عنوان گردید که می توانست یک عدد را بگیرد و تبدیل به یک غیر عدد با ظاهر فونت فارسی بنماید.
همان کلاس برای تبدیل اعداد موجود در یک رشته نیز موجود است.
امّا برای دسترسی به فارسی نمودن فونت اعداد در تمام وب سایت منطقی به نظر نمی رسد از روش بالا استفاده نماییم و ما دنبال روشی هستیم که وابسته به تنظیمات بروزر و یا فونت مورد نظر نباشد.
حتماً مستحضر هستید که کنترل هایی داریم که RightToLeft ساپورت هستند و زمانی که این کنترل ها در ارتباط با اعداد می باشند بادرنظر گرفتن"dir="rtl اعداد موجود در این کنترل ها به فونت فارسی تبدیل می شوند.
در این کنترل ها از چه متدها و یا فانکشن هایی برای این منظور استفاده می گردد؟
(C#‎ یا جاوااسکریپت فرقی نداره)

اما ظاهراً روش بالا هم وابسته به تنظیمات بروزر است و اکثراً در IE درست عمل می کنند نه فایرفکس!

همان گونه که برای شمسی کردن تاریخ می توان از کلاس و متد مربوط به آن در تمام وب سایت استفاده کرد آیا برای فارسی نمودن فونت اعداد می توان از کلاس و یا متد خاصی استفاده نمود؟

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

Peyman.Gh
سه شنبه 22 تیر 1389, 10:19 صبح
http://barnamenevis.org/forum/showthread.php?t=229671

majid_darab
سه شنبه 22 تیر 1389, 12:50 عصر
دست شما درد نکنه ...
این روشی که لینک گذاشتید هم یه جورایی مشابه روشی ست که در تاپیک های زیر اعلام شده :

http://www.barnamenevis.org/forum/showthread.php?t=138055

http://barnamenevis.org/forum/showthread.php?p=915129#post915129

امّا بدی این روش این است که اعمال آن بر روی تمامی تکست های کار شده و دیگر قسمت های وب سایت زمان گیر است...
درضمن در این روشی که اعلام فرمودید اعداد با فونت فارسی چگونه تولید شده اند؟

آیا نمی توان از culture یا متد دیگری که بتواند بدون پارامتر این موضوع را حل کند استفاده نمود؟

با تشکر
مجید داراب

hamid67fathi
سه شنبه 22 تیر 1389, 13:57 عصر
آیا نمی توان از culture یا متد دیگری که بتواند بدون پارامتر این موضوع را حل کند استفاده نمود؟


سلام
اين کار شدنی نيست.
من اکثر اين راه ها رو امتحان کردم...
استفاده از متد فارسی ساز که دوستمون لينکش رو براتون گذاشتن چندان زمان گير نيست

majid_darab
سه شنبه 22 تیر 1389, 14:03 عصر
با سپاس فراوان

Peyman.Gh
سه شنبه 22 تیر 1389, 14:53 عصر
بدون استفاده از Switch هم میتوانید این کار را انجام دهید با استفاده از خاصیت Replace رشته ها !

majid_darab
سه شنبه 22 تیر 1389, 18:16 عصر
بنابراین کلاس مورد نظر می تواند به صورت زیر نیز باشد :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Classes
{
public class ConvertToPersianNumberClass
{
public static string ConvertNumLa2Fa_Method1(string strWithOrWithoutNum)
{
string result = string.Empty;
foreach (char c in strWithOrWithoutNum.ToCharArray())
{
switch (c)
{
case '0':
result += "٠";
break;
case '1':
result += "١";
break;
case '2':
result += "٢";
break;
case '3':
result += "٣";
break;
case '4':
result += "٤";
break;
case '5':
result += "٥";
break;
case '6':
result += "٦";
break;
case '7':
result += "٧";
break;
case '8':
result += "٨";
break;
case '9':
result += "٩";
break;
default:
result += c;
break;
}
}
return result;
}

//Another Way

public static string ConvertNumLa2Fa_Method2(string strWithOrWithoutNum)
{
string result = string.Empty;
result = strWithOrWithoutNum.Replace('0', '٠');
result = result.Replace('1', '١');
result = result.Replace('2', '٢');
result = result.Replace('3', '٣');
result = result.Replace('4', '٤');
result = result.Replace('5', '٥');
result = result.Replace('6', '٦');
result = result.Replace('7', '٧');
result = result.Replace('8', '٨');
result = result.Replace('9', '٩');
return result;
}
}
}



باتشکّر
مجید داراب

majid_darab
سه شنبه 22 تیر 1389, 18:21 عصر
کدهای اسکی کاراکترهای فارسی بکار رفته در کد بالا عبارتند از :
0660 برای عدد صفر --- تا 0669 برای عدد نه
==========================================
خروجی متدهای بالا رشته هایی هستند که قابل تبدیل به int نمی باشند (درصورتی که رشته ی مزبور تماماً تشکیل شده از اعداد با فونت فارسی باشد)و امکان انجام عملیات ریاضی روی آنها وجود ندارد.