download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

обработка на стрингове

Автор
Съобщение
power_m
Пон, 23.08.10, 20:35
Някой може ли да каже как да направя така, че проклето тире което ми се появява в текстбокс 5 да не се появява

ето кода :
Private Sub UserForm_Activate()
Dim MyString As String

Dim Digits As String

Dim Letters As String

Dim i As Long

Dim StrLen As Long

Digits = ""

Letters = ""

MyString = "АП - 53"
StrLen = Len(MyString)

For i = 1 To StrLen Step 1

If Asc(Mid(MyString, i, 1)) >= 48 And Asc(Mid(MyString, i, 1)) <= 57 Then

Digits = Digits + Mid(MyString, i, 1)

Else

Letters = Letters + Mid(MyString, i, 1)

End If
ComboBox1 = MyString
TextBox5 = Letters
TextBox4 = Digits

Next i
End Sub
Тоест в else декларацията да направя така , че да се появават само букви на кирилица, а не препинателни знаци
Благодаря !

кака.лара
Пон, 23.08.10, 20:57
Абе мързи ме точно сега да инсталирам Студио и да се разправям с дебъгване, ама виж как ти вървят условията:
първо имаш
If Asc(Mid(MyString, i, 1)) >= 48 And Asc(Mid(MyString, i, 1)) <= 57 Then
и после направо
Else

Като ги съчетаеш, в частта Else ти попада всичко с код под 48 /и препинателните/ и всичко над 57 /и всичката латиница/.

Вместо обикновено Else сложи 2-3 клаузи ElseIf, така че да отрязват всички кодове извън кирилицата. Виж там по ASCII-таблицата кои кодове ти трябват.

power_m
Пон, 23.08.10, 21:03

RE: обработка на стрингове

” Абе мързи ме точно сега да инсталирам Студио и да се разправям с дебъгване, ама виж как ти вървят условията:
първо имаш
If Asc(Mid(MyString, i, 1)) >= 48 And Asc(Mid(MyString, i, 1)) <= 57 Then
и после направо
Else

Като ги съчетаеш, в частта Else ти попада всичко с код под 48 /и препинателните/ и всичко над 57 /и всичката латиница/.

Вместо обикновено Else сложи 2-3 клаузи ElseIf, така че да отрязват всички кодове извън кирилицата. Виж там по ASCII-таблицата кои кодове ти трябват. „

промених кодовете от 32 -64 и за моя изненада тирето от textbox5 се премести в textbox4 ...
electric_cc
Вто, 24.08.10, 07:06
В първия вариант трябва да напишеш след Else:
Else
   If ((Mid(MyString, i, 1)>="A" And Mid(MyString, i, 1)<="z") or If Asc(Mid(MyString, i, 1)) >=192 then
        Letters = Letters + Mid(MyString, i, 1)
   end if
End if
редактиран от electric_cc на 24.08.10 09:25
phrozencrew
Вто, 24.08.10, 07:12
Мисля, че няма по-лесна обработка на всякакъв тип текст от използването на RegEx-и. Само, че те не се поддържат нативно в VB (поне не и в 6-цата), за това се добавят от VBScript:

power_m
Вто, 24.08.10, 09:58

RE: обработка на стрингове

” Мисля, че няма по-лесна обработка на всякакъв тип текст от използването на RegEx-и. Само, че те не се поддържат нативно в VB (поне не и в 6-цата), за това се добавят от VBScript:

Благодаря ти electric , а също така на всички отзовали се ....
 Ето кода който претъпря леки синтактични промени ... добавих една дясна скоба и след OR премахнах if

Else
If (Mid(MyString, i, 1)) >= "A" And (Mid(MyString, i, 1) <= "z") Or Asc(Mid(MyString, i, 1)) >= 192 Then
Letters = Letters + Mid(MyString, i, 1)
   End If
End If

редактиран от power_m на 24.08.10 10:01

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.