PDA

View Full Version : تشخیص فارسی یا انگلیسی بودن کلمه



oYaMaa
سه شنبه 27 تیر 1391, 13:55 عصر
سلام
دوستان راهی هست تا برنامه متوجه فارسی یا انگلیسی بودن کلمه بشه؟
دقت کنید میخوام متوجه زبان کلمه بشه نه زبان ویندوز یا کیبورد...
ممنون!

hamid-nic
سه شنبه 27 تیر 1391, 14:01 عصر
سلام
یکی از راه های تشخیص این است که باید کد اسکی حروف را بررسی کنید تا متوجه بشید . چون حروف در زبان انگلیسی یا فارسی کد های اسکی مختلفی دارند .

oYaMaa
سه شنبه 27 تیر 1391, 14:06 عصر
سلام
یکی از راه های تشخیص این است که باید کد اسکی حروف را بررسی کنید تا متوجه بشید . چون حروف در زبان انگلیسی یا فارسی کد های اسکی مختلفی دارند .
یکم راهنمایی میکنید؟
کد اسکی چی هست؟!

abolfazl-z
سه شنبه 27 تیر 1391, 15:04 عصر
سلام دوست عزیز :لبخندساده:
بعضی از شئ ها در ویژوال بیسیک دارای رویداد هستند مثل فرم - کمند و ...

که دو تا از این رویداد ها رویداد KeyDown و KeyPress . که به کمک اینها میتونی کد کلید زده شده را بیابی:
If KeyCode >= 65 And KeyCode <= 90 Then

MsgBox "Horoofe English" & Chr(KeyCode)
' mitoooneee intoree ham benaveseee
':
'If KeyCode = vbKeyA Then
End If
If KeyCode >= 95 And KeyCode <= 105 Then
MsgBox "Horoofe English" & Chr(KeyCode)
' mitoooneee intoree ham benaveseee
':
'If KeyCode = vbKeyNumpad0 Then = yaneee click 0 zade shode
End If
End Sub
ثابت ها:


کلید های A تا Z
کد اسکی : 65-90
ثابت: VbKeyA-VbKey


اعداد 0 تا 9
کد اسکی: 95-105
ثابت: VbkeyNumpad0-VbKeyNumpad9
و بقیه کلید ها را هم میتونی اینتوری بنویسی:
VbKeyNameKey
مثلا: VbKeyF5
VbKeyTab
برای Enter باید اینتوریی بنویسی:
VbKeyReturn
برای کپس لوک :
VbKeyCapital
برای کلید Esc :
VbKeyEscap
و...
منظور از ثابت اینکه میتونی بجای عدد از حروف یا همان ثابت اش استفاده کنی (کلید های Ctrl+Space بزن بهت کمک می کنه)
البته با دو تابع زیر میتونی همه را بدست بیاری:
(0-255)Chr === (این تابع کد اسکی رو میگیره و کاراکترو نشان میده)
(کاراکتر مورد نظر)Asc ===(این تابع کاراکتر را میگیره و کد اسکی اش را نشان میده)
خوب با یک حلقه For میتونی همه را پیدا کنی.(حروف فارسی رو هم پیدا کن)
البته من اینکار رو کردم:


Chr: Chr: Asc: 1




Chr: Asc: 2

Chr: Asc: 3
Chr: Asc: 4
Chr: Asc: 5
Chr: Asc: 6
Chr: Asc: 7
Chr: Asc: 8
Chr: Asc: 9
Chr:
Asc: 10
Chr: Asc: 11
Chr: Asc: 12
Chr:
Asc: 13
Chr: Asc: 14
Chr: Asc: 15
Chr: Asc: 16
Chr: Asc: 17
Chr: Asc: 18
Chr: Asc: 19
Chr: Asc: 20
Chr: Asc: 21
Chr: Asc: 22
Chr: Asc: 23
Chr: Asc: 24
Chr: Asc: 25
Chr: Asc: 26
Chr: Asc: 27
Chr: Asc: 28
Chr: Asc: 29
Chr: Asc: 30
Chr: Asc: 31
Chr: Asc: 32
Chr: ! Asc: 33
Chr: " Asc: 34
Chr: # Asc: 35
Chr: $ Asc: 36
Chr: % Asc: 37
Chr: & Asc: 38
Chr: ' Asc: 39
Chr: ( Asc: 40
Chr: ) Asc: 41
Chr: * Asc: 42
Chr: + Asc: 43
Chr: , Asc: 44
Chr: - Asc: 45
Chr: . Asc: 46
Chr: / Asc: 47
Chr: 0 Asc: 48
Chr: 1 Asc: 49
Chr: 2 Asc: 50
Chr: 3 Asc: 51
Chr: 4 Asc: 52
Chr: 5 Asc: 53
Chr: 6 Asc: 54
Chr: 7 Asc: 55
Chr: 8 Asc: 56
Chr: 9 Asc: 57
Chr: : Asc: 58
Chr: ; Asc: 59
Chr: < Asc: 60
Chr: = Asc: 61
Chr: > Asc: 62
Chr: ? Asc: 63
Chr: @ Asc: 64
Chr: A Asc: 65
Chr: B Asc: 66
Chr: C Asc: 67
Chr: D Asc: 68
Chr: E Asc: 69
Chr: F Asc: 70
Chr: G Asc: 71
Chr: H Asc: 72
Chr: I Asc: 73
Chr: J Asc: 74
Chr: K Asc: 75
Chr: L Asc: 76
Chr: M Asc: 77
Chr: N Asc: 78
Chr: O Asc: 79
Chr: P Asc: 80
Chr: Q Asc: 81
Chr: R Asc: 82
Chr: S Asc: 83
Chr: T Asc: 84
Chr: U Asc: 85
Chr: V Asc: 86
Chr: W Asc: 87
Chr: X Asc: 88
Chr: Y Asc: 89
Chr: Z Asc: 90
Chr: [ Asc: 91
Chr: \ Asc: 92
Chr: ] Asc: 93
Chr: ^ Asc: 94
Chr: _ Asc: 95
Chr: ` Asc: 96
Chr: a Asc: 97
Chr: b Asc: 98
Chr: c Asc: 99
Chr: d Asc: 100
Chr: e Asc: 101
Chr: f Asc: 102
Chr: g Asc: 103
Chr: h Asc: 104
Chr: i Asc: 105
Chr: j Asc: 106
Chr: k Asc: 107
Chr: l Asc: 108
Chr: m Asc: 109
Chr: n Asc: 110
Chr: o Asc: 111
Chr: p Asc: 112
Chr: q Asc: 113
Chr: r Asc: 114
Chr: s Asc: 115
Chr: t Asc: 116
Chr: u Asc: 117
Chr: v Asc: 118
Chr: w Asc: 119
Chr: x Asc: 120
Chr: y Asc: 121
Chr: z Asc: 122
Chr: { Asc: 123
Chr: | Asc: 124
Chr: } Asc: 125
Chr: ~ Asc: 126
Chr:  Asc: 127
Chr: € Asc: 128
Chr: پ Asc: 129
Chr: ‚ Asc: 130
Chr: ƒ Asc: 131
Chr: „ Asc: 132
Chr: … Asc: 133
Chr: † Asc: 134
Chr: ‡ Asc: 135
Chr: ˆ Asc: 136
Chr: ‰ Asc: 137
Chr: ٹ Asc: 138
Chr: ‹ Asc: 139
Chr: ΠAsc: 140
Chr: چ Asc: 141
Chr: ژ Asc: 142
Chr: ڈ Asc: 143
Chr: گ Asc: 144
Chr: ‘ Asc: 145
Chr: ’ Asc: 146
Chr: “ Asc: 147
Chr: ” Asc: 148
Chr: • Asc: 149
Chr: – Asc: 150
Chr: — Asc: 151
Chr: ک Asc: 152
Chr: ™ Asc: 153
Chr: ڑ Asc: 154
Chr: › Asc: 155
Chr: œ Asc: 156
Chr: ‌ Asc: 157
Chr: ‍ Asc: 158
Chr: ں Asc: 159
Chr: Asc: 160
Chr: ، Asc: 161
Chr: ¢ Asc: 162
Chr: £ Asc: 163
Chr: ¤ Asc: 164
Chr: ¥ Asc: 165
Chr: ¦ Asc: 166
Chr: § Asc: 167
Chr: ¨ Asc: 168
Chr: © Asc: 169
Chr: ھ Asc: 170
Chr: « Asc: 171
Chr: ¬ Asc: 172
Chr: ­ Asc: 173
Chr: ® Asc: 174
Chr: ¯ Asc: 175
Chr: ° Asc: 176
Chr: ± Asc: 177
Chr: ² Asc: 178
Chr: ³ Asc: 179
Chr: ´ Asc: 180
Chr: µ Asc: 181
Chr: ¶ Asc: 182
Chr: · Asc: 183
Chr: ¸ Asc: 184
Chr: ¹ Asc: 185
Chr: ؛ Asc: 186
Chr: » Asc: 187
Chr: ¼ Asc: 188
Chr: ½ Asc: 189
Chr: ¾ Asc: 190
Chr: ؟ Asc: 191
Chr: ہ Asc: 192
Chr: ء Asc: 193
Chr: آ Asc: 194
Chr: أ Asc: 195
Chr: ؤ Asc: 196
Chr: إ Asc: 197
Chr: ئ Asc: 198
Chr: ا Asc: 199
Chr: ب Asc: 200
Chr: ة Asc: 201
Chr: ت Asc: 202
Chr: ث Asc: 203
Chr: ج Asc: 204
Chr: ح Asc: 205
Chr: خ Asc: 206
Chr: د Asc: 207
Chr: ذ Asc: 208
Chr: ر Asc: 209
Chr: ز Asc: 210
Chr: س Asc: 211
Chr: ش Asc: 212
Chr: ص Asc: 213
Chr: ض Asc: 214
Chr: × Asc: 215
Chr: ط Asc: 216
Chr: ظ Asc: 217
Chr: ع Asc: 218
Chr: غ Asc: 219
Chr: ـ Asc: 220
Chr: ف Asc: 221
Chr: ق Asc: 222
Chr: ك Asc: 223
Chr: à Asc: 224
Chr: ل Asc: 225
Chr: â Asc: 226
Chr: م Asc: 227
Chr: ن Asc: 228
Chr: ه Asc: 229
Chr: و Asc: 230
Chr: ç Asc: 231
Chr: è Asc: 232
Chr: é Asc: 233
Chr: ê Asc: 234
Chr: ë Asc: 235
Chr: ى Asc: 236
Chr: ي Asc: 237
Chr: î Asc: 238
Chr: ï Asc: 239
Chr: ً Asc: 240
Chr: ٌ Asc: 241
Chr: ٍ Asc: 242
Chr: َ Asc: 243
Chr: ô Asc: 244
Chr: ُ Asc: 245
Chr: ِ Asc: 246
Chr: ÷ Asc: 247
Chr: ّ Asc: 248
Chr: ù Asc: 249
Chr: ْ Asc: 250
Chr: û Asc: 251
Chr: ü Asc: 252
Chr: ‎ Asc: 253
Chr: ‏ Asc: 254
Chr: ے Asc: 255



کد کلید های Space = chr(vbSpace) برای تب هم VbTab و برای خط بعدی هم VbCrlf

oYaMaa
سه شنبه 27 تیر 1391, 15:26 عصر
تشکر فراوان از abolfazl-z
داداش اگر امکانش هست یه سورس بزارید (واسه چگونگی تشخیصش)، چون یکم واسم پیچیده شد.:چشمک:
ممنون

MohammadReza.OmidAllah
سه شنبه 27 تیر 1391, 16:39 عصر
با تابع Chr()اسکی نوشته های فارسیت رو پیداکن بعد تو برنامت یه شرط بزار مثلا رنج نوشته فارسی از 50 - 100 هست اینارو فارسی در نظر بگیره

Shahab.
سه شنبه 27 تیر 1391, 17:06 عصر
کد زیر را بررسی کنید


Dim englisha As String
englisha = "abcdefghqwvmnzxrtyuioplkjs"
englisha = englisha & UCase(englisha)
If InStr(1, englisha, Left(Text1.Text, 1)) <> 0 Then MsgBox "Latin ast"

در روش فوق صرفا به مقایسه نویسه ی نخست بسنده کرده ام
شما میتونید با ایجاد یک حلقه ی for تک تک نویسه های رشته مد نظر رو مقایسه کنید

abolfazl-z
سه شنبه 27 تیر 1391, 17:43 عصر
دوست عزیز
تعریف رویداد:
نگاه کن هر شئ ای در ویژوال بیسیک دارای رویداد است یعنی زمانی که کار بر بر روی شئ کلیک کرد که این رویداد به نام Mouse_Down یا کلید ماوس را رها کرد Mouse_Up و یا هر یک از کلید صفحه کلید را فشار داد و یا ماوس را رو شئ حرکت داد Mouse_Move چه اتفاقی بیفتد.
مثلا ما می خواهیم هر چی کاربر توی تکس باکس وارد کرد بفهمیم که اون چیه انگلیسی یا فارسی؟؟ درسته!
خوب پس بر روی TextBox دوبار کلیک کن بعد رویداد KeyDown را انتخاب کن
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

End Sub

بیشتر ابزار ها در ویژوال بیسیک این رویداد را دارند.
خوب اگر نگاه کنی می بینی که رویداد KeyDown دارای یک آرگومان به نام KeyCode که هر کاراکتری را که شما در تکس باکس وارد کنید کد اسکی آن کاراکتر در این آرگومان قرارمیگیره . پس با توجه به کد های اسکی بالا که حروف انگلیسی از 65 تا 90 است پس اگر آرگومان KeyCode هر عددی را بین 65 تا 90 بده می فهمیم که حرورف وارد شده انگلیسی است بعد همانطورکه گفتم تابع Chr کد اسکی را به کاراکتر مربوط اش تبدیل میکند و کد اسکی همهجا یکی است
مثال :

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode >= 65 And KeyCode <= 90 Then
Print "Horoofe vared shode En ast" & ": " & chr(KeyCode)
End if
MsgBox "Horoofe vared Shode English Mibashd."
End Sub

کد اسکی A = 65
B = 66
و...
Z = 90
مثلا من کاراکتر A را در تکس باکس وارد کردم برنامه بالا سریع یک MsgBox به من نشان میده و میگه کد وارد شده انگلیسی می باشد و بر روی فرم هم همین پیغام را همرا با حروفی که وارد کردم را چاپ می کند.

کلا ما 255 تا کاراکتر اسکی داریم که شامل تمامی دکمه های صفحه کلیک است.

sepehr1014
پنج شنبه 02 مرداد 1393, 15:17 عصر
میتونید از RegEx استفاده کنید. IsArabic

mohammad57us
سه شنبه 06 آبان 1393, 19:00 عصر
برای تشخیص فارسی بودن کلمه از دستورات زیر استفاده کنید
Dim rgx as Regex
set rgx = new Regex(@"^[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$")
isPersian = rgx.IsMatch(name)