رفتن به مطلب

تشخیص حروف داخل Edittext


امیرنیوکی

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

سلام

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

خوب کافیه از متد boolean استفاده کنیم من اینجا تشخیص عدد ، انگلیسی و فارسی بودن رو نوشتم

ابتدا

    Private Button1 As Button
   Private EditText1 As EditText

حالا میایم متد مربوط رو مینویسیم

Sub checknumber(str As String) As Boolean
   Dim i As Int
   Dim j As Int = 0
   For i = 0 To str.Length - 1
       Select str.CharAt(i)
           Case "0"
               j = j +1
           Case "1"
               j = j +1
           Case "2"
               j = j +1
           Case "3"
               j = j +1
           Case "4"
               j = j +1
           Case "5"
               j = j +1
           Case "6"
               j = j +1
           Case "7"
               j = j +1
           Case "8"
               j = j +1
           Case "9"
               j = j +1
           Case "."
               j = j +1
       End Select
   Next
   If j = str.Length Then
       Return True
   End If
   Return False
End Sub

تو این متد میایم استرینگی که وارد متد میشه رو با یه حلقه میچرخیم توش

یه متغییر عددی میسازیم

و با دستور select

حروفی رو ک تو حلقه داره میچرخه داخل دستور select میکنیم

اگه حروف یکی از از حروفی ک ما مشخض کردیم باشه متغییر عددی خودمون + 1 میکنیم

بعد از اتمام حلقه با یه دستور if میگیم اگه متغییر عددی j برابر با اندازه استرینگ str بود داده برگشت داده true باشه اگه false باشه

اینم متد تشخیص حروف انگلیسی

Sub checkCharecter(str As String) As Boolean
   str = str.ToLowerCase
   Dim i As Int
   Dim j As Int = 0
   For i = 0 To str.Length - 1
       Select str.CharAt(i)
           Case "a"
               j = j +1
           Case "b"
               j = j +1
           Case "c"
               j = j +1
           Case "d"
               j = j +1
           Case "e"
               j = j +1
           Case "f"
               j = j +1
           Case "g"
               j = j +1
           Case "h"
               j = j +1
           Case "i"
               j = j +1
           Case "j"
               j = j +1
           Case "k"
               j = j +1
           Case "l"
               j = j +1
           Case "m"
               j = j +1
           Case "n"
               j = j +1
           Case "o"
               j = j +1
           Case "p"
               j = j +1
           Case "q"
               j = j +1
           Case "r"
               j = j +1
           Case "s"
               j = j +1
           Case "t"
               j = j +1
           Case "u"
               j = j +1
           Case "v"
               j = j +1
           Case "w"
               j = j +1
           Case "x"
               j = j +1
           Case "y"
               j = j +1
           Case "z"
               j = j +1
           Case "."
               j = j +1
       End Select
   Next
   If j = str.Length Then
       Return True
   End If
   Return False
End Sub

توضیحات این متد مثل متد بالاست

اینم متد تشخیص حروف فارسی

Sub checkFarsiCharecter(str As String) As Boolean
   str = str.ToLowerCase
   Dim i As Int
   Dim j As Int = 0
   For i = 0 To str.Length - 1
       Select str.CharAt(i)
           Case "a"
               j = j +1
           Case "b"
               j = j +1
           Case "c"
               j = j +1
           Case "d"
               j = j +1
           Case "e"
               j = j +1
           Case "f"
               j = j +1
           Case "g"
               j = j +1
           Case "h"
               j = j +1
           Case "i"
               j = j +1
           Case "j"
               j = j +1
           Case "k"
               j = j +1
           Case "l"
               j = j +1
           Case "m"
               j = j +1
           Case "n"
               j = j +1
           Case "o"
               j = j +1
           Case "p"
               j = j +1
           Case "q"
               j = j +1
           Case "r"
               j = j +1
           Case "s"
               j = j +1
           Case "t"
               j = j +1
           Case "u"
               j = j +1
           Case "v"
               j = j +1
           Case "w"
               j = j +1
           Case "x"
               j = j +1
           Case "y"
               j = j +1
           Case "z"
               j = j +1
           Case "0"
               j = j +1
           Case "1"
               j = j +1
           Case "2"
               j = j +1
           Case "3"
               j = j +1
           Case "4"
               j = j +1
           Case "5"
               j = j +1
           Case "6"
               j = j +1
           Case "7"
               j = j +1
           Case "8"
               j = j +1
           Case "9"
               j = j +1
       End Select
   Next
   If j = 0   Then
       Return True
   End If
   Return False
End Sub

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

ولی در پایان دستور if

شرط میکنیم که اگه متغییر عددی j برابر با 0 بود داده برگشت داده true باشه چون اگه متن فارسی باشه متغییر ما نباید 1 باشه چون در کدهای بالا ما حروف و اعداد رو مشخص کردیم

شما حتی میتونین حروف فارسی رو قرار بدین

و کد button رو اینجوری مینویسیم

Sub Button1_Click
   If checknumber(EditText1.Text) Then
       Msgbox("این متن عددی است","بیسیک 4 اندروید")
   Else If checkCharecter(EditText1.Text) Then
       Msgbox("این متن انگلیسی است","بیسیک 4 اندروید")
   Else If checkFarsiCharecter(EditText1.Text) Then
       Msgbox("این متن فارسی است","بیسیک 4 اندروید")
   Else
       Msgbox("این متن مختلط است","بیسیک 4 اندروید")
   End If
End Sub

راه های زیاد و آسون تری هم هست فقط برای مثال بود

امیدوارم مفید باشه

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

  • 4 هفته بعد...

سلام و خسته نباشید!!

چجوری ممکنه فاصله بین کلمات رو تشخیص بدیم و مثلا جایگزین کنیم با کلمه دلخواه!

ینی به این شکل مثلا تایپ میشه : سلام خوبی ! فاصله بین "سلام" و "خوبی" رو با کلمه فاصله پر بشه....یعنی مثلا خروجی بشه : سلام فاصله خوبی

اسپیس رو تشخیص و با کلمه تایین شده پر کنه!!!

به نوع و زبان تایپ هم وابسته نباشه!

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

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

کافیه یه if بزاری

بگی اگه کلمه = سلام بود به آخرش فاصله + خوبی اضافه کنه و به سلام بچسبونه

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

سلام و خسته نباشید!!

چجوری ممکنه فاصله بین کلمات رو تشخیص بدیم و مثلا جایگزین کنیم با کلمه دلخواه!

ینی به این شکل مثلا تایپ میشه : سلام خوبی ! فاصله بین "سلام" و "خوبی" رو با کلمه فاصله پر بشه....یعنی مثلا خروجی بشه : سلام فاصله خوبی

اسپیس رو تشخیص و با کلمه تایین شده پر کنه!!!

به نوع و زبان تایپ هم وابسته نباشه!

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

  Dim Changed As String
   Changed = EditText1.Text.Replace(" "," فاصله ")
   Msgbox(Changed,"")

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

  • 5 ماه بعد...

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

 

دوستان چجوری امکانش هست حروف داخل ادیت تکست رو تشخیص و معادل سازی کنیم؟

 

مثلا کاربر داخل ادیت تکست بزنه "سلام" و ما نتیجه رو نشون بدیم "SALAM" 

 

ینی حروف به حروف تبدیل بشه مثلا حتی اگه کاربر زد "چ پ خ د" نتیجه نشون بده " ch p kh d"

 

یا مثلا وارد کنن 1122 نتیجه بزنه ab???

 

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

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

سلام

دوستم چیزی رو که شما میگید به این راحتیا هم نیست که بنده توی 4 خط توضیح بهتون بگم.شما باید یک پردازش متن قوی بسازید.

قدیما واسه چت روم های نیمباز میومدیم Auto Answer  میساختیم ولی نه به صورتی که شما می گید.میومدیم کلمات رو به دو ستون تقسیم می کردیم.Target  و Anwser

Target :  کلمه ای کاربر میگه.   ---- > کاربر : سلام دوستان

Answer :  جوابی در برابر با کلمه کاربر. ------> ربات : علیک سلام.

 

ولی اینکه بخواییم تک تک کاراکتر هارو بگیریم و معادلشو بنویسیم یکم کار داره و باید بشینید الگوریتمشو بنویسید.ولی خب اگه محدود به یکسری لغات هستید میتونید مثل یک دیکشنری عمل کنید و مقابل هر کلمه رو توی دیتابیس قرار بدید.

 

موفق باشید.

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

  • 1 سال بعد...

سلام دوستان

چطور میشه با کلیک بر روی edit text متن داخل آن توسط کرسر انتخاب بشه ؟

ممنون از راهنماییتون

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

در ۱ ساعت قبل، mr_marashi گفته است :

چطور میشه با کلیک بر روی edit text متن داخل آن توسط کرسر انتخاب بشه ؟

Sub edittext1_FocusChanged (HasFocus As Boolean)
	If HasFocus=True Then edittext1.SelectAll
End Sub

 

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

بایگانی شده

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

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

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