رفتن به مطلب
  • 0

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


mehran3d

سوال

سلام دوستانم

من توی پروژه ای که دارم باید یه سری مختصات از یه rss  بگیرم و توی مپ نمایش بدم

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

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

این کارو هم کردم نشد

 strtest=strtest.Replace("٠","0")
strtest=strtest.Replace("١","1")
strtest=strtest.Replace("٢","2")
strtest=strtest.Replace("٣","3")
strtest=strtest.Replace("٤","4")
strtest=strtest.Replace("٥","5")
strtest=strtest.Replace("٦","6")
strtest=strtest.Replace("٧","7")
strtest=strtest.Replace("٨","8")
strtest=strtest.Replace("٩","9")

راهی به ذهنتون میرسه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 18 دقیقه قبل، sajjadebrahimi گفته است :

سلام به تمام دوستان انجمن.

این مشکل که  اکثر دوستان باهاش مشکل داشتن، از بزرگترین دغدغه های خودم بود. به لطف خدا امروز حلش کردم.

کافیه فقط متد زیر رو درون برنامه استفاده کنید


Sub FaToEn(Num As String) As String
	Dim st As String
	For i=0 To Num.Length-1
		Select Num.CharAt(i)
			Case Chr(1776) ,Chr(1632)
				st=st&0
			Case Chr(1777) ,Chr(1633)
				st=st&1
			Case Chr(1778) ,Chr(1634)
				st=st&2
			Case Chr(1779) ,Chr(1635)
				st=st&3
			Case Chr(1780) ,Chr(1636)
				st=st&4
			Case Chr(1781) ,Chr(1637)
				st=st&5
			Case Chr(1782) ,Chr(1638)
				st=st&6
			Case Chr(1783) ,Chr(1639)
				st=st&7
			Case Chr(1784) ,Chr(1640)
				st=st&8
			Case Chr(1785) ,Chr(1641)
				st=st&9
		End Select
	Next
	Return st
End Sub

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

نکته: رشته ای که به این متد میدید، فقط شامل اعداد باشه نه هیچ کاراکتر دیگه.

در ضمن کدی که بالا خدمتتون ارائه دادم، بر اساس آزمون و خطا نیست، بلکه بر اساس اصول علمی هست و کاملا مورد اعتماد

 

 

میتونید کد بالا رو به صورت زیر هم استفاده کنید

Sub FaToEns(Number As String) As String
	''''''''''''''''''''''''''''''''''''''''''''اعداد فارسی
	Number=Number.Replace(Chr(1776),"0")
	Number=Number.Replace(Chr(1777),"1")
	Number=Number.Replace(Chr(1778),"2")
	Number=Number.Replace(Chr(1779),"3")
	Number=Number.Replace(Chr(1780),"4")
	Number=Number.Replace(Chr(1781),"5")
	Number=Number.Replace(Chr(1782),"6")
	Number=Number.Replace(Chr(1783),"7")
	Number=Number.Replace(Chr(1784),"8")
	Number=Number.Replace(Chr(1785),"9")
	
	
	''''''''''''''''''''''''''''''''''''''''''''اعداد عربی
	Number=Number.Replace(Chr(1632),"0")
	Number=Number.Replace(Chr(1633),"1")
	Number=Number.Replace(Chr(1634),"2")
	Number=Number.Replace(Chr(1635),"3")
	Number=Number.Replace(Chr(1636),"4")
	Number=Number.Replace(Chr(1637),"5")
	Number=Number.Replace(Chr(1638),"6")
	Number=Number.Replace(Chr(1639),"7")
	Number=Number.Replace(Chr(1640),"8")
	Number=Number.Replace(Chr(1641),"9")
	Return Number
End Sub

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر


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

مثلا عدد 1 رو تبدیل میکنه به ۱

Sub ConvertNumbers2Persian(sNumber As String) As String

Dim sNumbers(10) As String

Dim res As String

Dim j As Int

res = sNumber

sNumbers(0) = "٠"

sNumbers(1) = "١"

sNumbers(2) = "٢"

sNumbers(3) = "٣"

sNumbers(4) = "٤"

sNumbers(5) = "٥"

sNumbers(6) = "٦"

sNumbers(7) = "٧"

sNumbers(8) = "٨"

sNumbers(9) = "٩"

For i =0 To sNumber.Length - 1

j = sNumber.SubString2(i,i+1)

res = res.Replace(sNumber.CharAt(i),sNumbers(j))

Next

Return res

End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

احتمالا شما اصلا با اعداد فارسی روبرو نیستید!

شاید فونت شما اینگونه نمایش میده

یکبار در گوشی اعداد بدست آمده رو بدون تنظیم هیچ فونتی مشاهده کنید تا متوجه بشید که واقعا فارسیه یا نه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

احتمالا شما اصلا با اعداد فارسی روبرو نیستید!

شاید فونت شما اینگونه نمایش میده

یکبار در گوشی اعداد بدست آمده رو بدون تنظیم هیچ فونتی مشاهده کنید تا متوجه بشید که واقعا فارسیه یا نه؟

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

احتمالا شما اصلا با اعداد فارسی روبرو نیستید!

شاید فونت شما اینگونه نمایش میده

یکبار در گوشی اعداد بدست آمده رو بدون تنظیم هیچ فونتی مشاهده کنید تا متوجه بشید که واقعا فارسیه یا نه؟

یه بار دیگه بهتر توضیح میدم

من یه سری آدرس در قالب  xml  میگیرم که توش مختصات gps  اینجوری هستش.

<long>۴۷.۷۱ E</long>
 

همین الان تست کردم. فونت BIRCH  که فارسی نداره رو دادم به لیبل، دو کاراکتر اول متن توی لیبل رو

 با دستور SubString2 درو جدا کردم  دوباره گذاشتم تو خود لیبل

قاعدتا باید 47 رو ببینم اما ۴۷ رو می بینم

 
اگه هم از ساب استرینگ استفاده نکنم ، همه اعداد فارسیه اما "E"  تغییر قلم میده
Dim mb As String
	mb=Label10.Text
	Label10.Text=mb.SubString2(0,2)
لینک ارسال
به اشتراک گذاری در سایت های دیگر

کوفتی بمیری.... :wacko1:

داغون شدم :scare3:

منم همین مشکل رو دارم، میخوام یه عدد رو جمع کنم ولی به دلیل فارسی بودنش اررور میده :wacko3:

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگه اعداد کد رو جا به جا کنید چی؟؟

اینجوری:

strtest=strtest.Replace("5","٥")

اگه مشکل حل نشد یه فونت انگیلیسی دیگه انتخاب کن شاید بشه!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام به دوستان

تا این وقت شب بیدار موندم و آخر سر تونستم ینو بنویسم، ولی فک کنم اگه فونت گوشی عوض بشه به مشکل بر بخوره

فلا که برا من داره کار میکنه :DD:

 

Sub ConvertNumbersPersian2English(sNumber As String) As String
  Dim PNumbers(10) As String
  Dim ENumbers(10) As String
  Dim res As String

  PNumbers(0) = "٠"
  PNumbers(1) = "۱"
  PNumbers(2) = "۲"
  PNumbers(3) = "٣"
  PNumbers(4) = "٤"
  PNumbers(5) = "۵"
  PNumbers(6) = "۶"
  PNumbers(7) = "٧"
  PNumbers(8) = "۸"
  PNumbers(9) = "۹"

  ENumbers(0) = "0"
  ENumbers(1) = "1"
  ENumbers(2) = "2"
  ENumbers(3) = "3"
  ENumbers(4) = "4"
  ENumbers(5) = "5"
  ENumbers(6) = "6"
  ENumbers(7) = "7"
  ENumbers(8) = "8"
  ENumbers(9) = "9"

  For i = 0 To sNumber.Length - 1
      For j=0 To 9
        If sNumber.SubString2(i,i+1) = PNumbers(j) Then
            Log (sNumber.SubString2(i,i+1) & "     " & PNumbers(j) & "   " & ENumbers(j))
            res = res & ENumbers(j)
        End If
    Next
  Next
  Return res
End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود

کد نویسی رو جداگونه ننویسید . همه رو توی یک خط کد بنویسید ببینید مشکل برطرف میشه ؟

اگه نشد نمونه Sample رو پیوست کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام به تمام دوستان انجمن.

این مشکل که  اکثر دوستان باهاش مشکل داشتن، از بزرگترین دغدغه های خودم بود. به لطف خدا امروز حلش کردم.

کافیه فقط متد زیر رو درون برنامه استفاده کنید

Sub FaToEn(Num As String) As String
	Dim st As String
	For i=0 To Num.Length-1
		Select Num.CharAt(i)
			Case Chr(1776) ,Chr(1632)
				st=st&0
			Case Chr(1777) ,Chr(1633)
				st=st&1
			Case Chr(1778) ,Chr(1634)
				st=st&2
			Case Chr(1779) ,Chr(1635)
				st=st&3
			Case Chr(1780) ,Chr(1636)
				st=st&4
			Case Chr(1781) ,Chr(1637)
				st=st&5
			Case Chr(1782) ,Chr(1638)
				st=st&6
			Case Chr(1783) ,Chr(1639)
				st=st&7
			Case Chr(1784) ,Chr(1640)
				st=st&8
			Case Chr(1785) ,Chr(1641)
				st=st&9
		End Select
	Next
	Return st
End Sub

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

نکته: رشته ای که به این متد میدید، فقط شامل اعداد باشه نه هیچ کاراکتر دیگه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...