PDA

View Full Version : تبدیل اعداد به فارسی و بلعکس ( Text123 ) داخل تکست باکس 123 به عدد فارسی



HM2020
جمعه 04 بهمن 1392, 11:02 صبح
سلام

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

مثال :

Hello Number 12345

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

امیر مهرشاد
جمعه 04 بهمن 1392, 12:15 عصر
سلام دوست عزیز
شما همین فونتی که گذاشتم استفاده کن کلا نیاز به تبدیلت مرتفع میشه

115843

مشکلی داشتی بگو:تشویق:

HM2020
جمعه 04 بهمن 1392, 22:20 عصر
سلام دوست عزیز
شما همین فونتی که گذاشتم استفاده کن کلا نیاز به تبدیلت مرتفع میشه


سلام

با فونت نه

من تو بعضی از سایت ها دیدم ( تو پنل اس ام اس برای ارسال پیامک ) یه چک باکس داشت

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

rahnema1
شنبه 05 بهمن 1392, 00:47 صبح
سلام
این جوری میشه

اعداد فارسی:



string mystring="12345hgjg";
for (int i = 0; i < 10; i++) {
mystring=mystring.Replace(
BitConverter.ToChar(BitConverter.GetBytes(i+48),0) ,
BitConverter.ToChar(BitConverter.GetBytes(i+1776), 0));
}


و اعداد عربی:


string mystring="12345hgjg";
for (int i = 0; i < 10; i++) {
mystring=mystring.Replace(
BitConverter.ToChar(BitConverter.GetBytes(i+48),0) ,
BitConverter.ToChar(BitConverter.GetBytes(i+1632), 0));
}

HM2020
شنبه 05 بهمن 1392, 01:03 صبح
سلام و تشکر

اگه بخواهیم به حالت اولیه برگردیم چی ؟

rahnema1
شنبه 05 بهمن 1392, 06:10 صبح
سلام و تشکر

اگه بخواهیم به حالت اولیه برگردیم چی ؟

به حالت اول خواستی برگردی، جای 48 و 1632 را با هم عوض کنید

rahnema1
شنبه 05 بهمن 1392, 07:08 صبح
البته یک نکته بگم که این دستور اعداد عربی را میذاره واسه اعداد فارسی به جای 1632 از 1776 استفاده کنید

HM2020
شنبه 05 بهمن 1392, 11:35 صبح
سلام

با تشکر از rahnema1

اینم کد vb.net



Dim mystring As String = TextBox1.Text
For i As Integer = 0 To 9
mystring = mystring.Replace(BitConverter.ToChar(BitConverter. GetBytes(i + 48), 0), BitConverter.ToChar(BitConverter.GetBytes(i + 1776), 0))
Next
TextBox1.Text = mystring



برعکس قضیه :



Dim mystring As String = TextBox1.Text
For i As Integer = 0 To 9
mystring = mystring.Replace(BitConverter.ToChar(BitConverter. GetBytes(i + 1776), 0), BitConverter.ToChar(BitConverter.GetBytes(i + 48), 0))
Next
TextBox1.Text = mystring

rahnema1
شنبه 05 بهمن 1392, 13:22 عصر
این جوری راحت تره

string mystring1="12345hgjg";
for (int i = 0; i < 10; i++) {
mystring1=mystring1.Replace((char)(i+48),(char)(i+ 1776));
}

یا

Dim mystring1 As String = "12345hgjg"
For i As Integer = 0 To 9
mystring1 = mystring1.Replace(ChrW(i + 48), ChrW(i + 1776))
Next

نسرین2000
یک شنبه 06 بهمن 1392, 07:46 صبح
سلام
من از این کد استفاده کردم و اعداد فارسی شد ولی برعکس می نویسه
یعنی وقتی شماره شناسنامه 4110 رو می خوام وارد کنم می نویسه 0114
این مشکل از کجاست ؟
تکس باکسم رو هم right to left کردم

HM2020
یک شنبه 06 بهمن 1392, 11:52 صبح
سلام
من از این کد استفاده کردم و اعداد فارسی شد ولی برعکس می نویسه
یعنی وقتی شماره شناسنامه 4110 رو می خوام وارد کنم می نویسه 0114
این مشکل از کجاست ؟
تکس باکسم رو هم right to left کردم

سلام

برای من چنین مشکلی پیش نمیاد.

شما دقیقا کد هاتو بذار.

zix_zixi
یک شنبه 06 بهمن 1392, 14:22 عصر
با سلام. ممنون از کدتون.
همونطور که کاربر نسرین2000 فرموده بودن برای من هم موقع تایپ بصورت برعکس تایپ میکنه

مثلاً 123 رو 321 می نویسه

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

HM2020
یک شنبه 06 بهمن 1392, 16:45 عصر
با سلام. ممنون از کدتون.
همونطور که کاربر نسرین2000 فرموده بودن برای من هم موقع تایپ بصورت برعکس تایپ میکنه

مثلاً 123 رو 321 می نویسه

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

سلام

اگه در قسمت TextBox1_TextChanged کد هاتونو وارد میکنید کد زیر را وارد نمایید :


Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim mystring1 As String = TextBox1.Text
For i As Integer = 0 To 9
mystring1 = mystring1.Replace(ChrW(i + 48), ChrW(i + 1776))
Next
TextBox1.Text = mystring1
TextBox1.SelectionStart = TextBox1.Text.Length
End Sub

یا می تونید در قسمت در قسمت LostFocus تکست باکس مورد نظر وارد نمایید


Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
Dim mystring1 As String = TextBox1.Text
For i As Integer = 0 To 9
mystring1 = mystring1.Replace(ChrW(i + 48), ChrW(i + 1776))
Next
TextBox1.Text = mystring1
End Sub

یا میتونید به صورت یه تابع بنویسید :


Function FarsiNumber(ByVal Textstr As String)
For i As Integer = 0 To 9
Textstr = Textstr.Replace(ChrW(i + 48), ChrW(i + 1776))
Next
Return Textstr
End Function

Function LatinNumber(ByVal Textstr As String)
For i As Integer = 0 To 9
Textstr = Textstr.Replace(ChrW(i + 1776), ChrW(i + 48))
Next
Return Textstr
End Function

برای فراخوانی متد مورد نظر :



TextBox1.Text = FarsiNumber(TextBox1.Text)

و

TextBox1.Text = LatinNumber(TextBox1.Text)


موفق و موید

نسرین2000
دوشنبه 07 بهمن 1392, 07:12 صبح
با تشکر از HM2020
مشکل برطرف شد
حالا این کد رو برای لیست باکس و کمبوباکس باید به چه صورت و در چه رویدادی نوشت ؟

HM2020
دوشنبه 07 بهمن 1392, 10:47 صبح
حالا این کد رو برای لیست باکس و کمبوباکس باید به چه صورت و در چه رویدادی نوشت ؟


سلام



Dim str As String = ""
For j As Integer = 0 To ListBox1.Items.Count - 1
For i As Integer = 0 To 9
str = ListBox1.Items(j)
str = str.Replace(ChrW(i + 48), ChrW(i + 1776))
ListBox1.Items(j) = str
Next
Next


راستی برای تشکر بر روی دکمه تشکر کلیک نمایید

موفق و موید باشید