Другие языки программирования и технологии
Visual Basic. Как в переменной удалить определенные символы?
Есть строковая переменная. Нужно из нее удалить все символы, кроме "разрешенных". Разрешены: русские буквы в любом регистре, английские буквы в любом регистре, цифры, и некоторые символы: ! .@ # $ % & ( ) = + -_ Если в строке есть другие символы, их надо удалить. На ум приходит только: брать в цикле каждый символ и сравнивать его с каждым допустимым (тоже, перебирая их циклом). Может есть более разумный способ?
Циклом перебираем символы
For n = 1 To Len (A$) ' Цикл, пока счетчик знаков меньше длины строки, то есть пока не кончится строка.
Code = Asc (Mid$ (A$, n, 1)) ' Берем ASCII-код символа
Select Case Code
Case &H41 To &H5A ' Английские буквы
Case &H61 To &H7A ' Английские буквы
Case &H410 To &H44F ' Русские буквы
Case &H30 To &H39 ' Цифры
Case &H21, &H40, &H23, &H24, &H25, &H26, &H28, &H29, &H3D, &H2B, &H2D, &H5F ' Специальные знаки
Case Else ' Если попалось что-то другое
A$ = Left$ (A$, n - 1) & Mid$ (A$, n + 1) ' Удаляем символ - берем все символы до него и все символы после него.
n = n - 2 ' Уменьшаем счетчик
End Select
Next n ' Переходим к следующему символу
Text1.Text = A$ ' Выводим полученную строку в текстовое поле
End
For n = 1 To Len (A$) ' Цикл, пока счетчик знаков меньше длины строки, то есть пока не кончится строка.
Code = Asc (Mid$ (A$, n, 1)) ' Берем ASCII-код символа
Select Case Code
Case &H41 To &H5A ' Английские буквы
Case &H61 To &H7A ' Английские буквы
Case &H410 To &H44F ' Русские буквы
Case &H30 To &H39 ' Цифры
Case &H21, &H40, &H23, &H24, &H25, &H26, &H28, &H29, &H3D, &H2B, &H2D, &H5F ' Специальные знаки
Case Else ' Если попалось что-то другое
A$ = Left$ (A$, n - 1) & Mid$ (A$, n + 1) ' Удаляем символ - берем все символы до него и все символы после него.
n = n - 2 ' Уменьшаем счетчик
End Select
Next n ' Переходим к следующему символу
Text1.Text = A$ ' Выводим полученную строку в текстовое поле
End
Только так и есть
FUNCTION StrFilter$ (Text$, Filter$)
'================================================================
' Фильтрация содержимого Text$
'
' Filter$=CHR$(CodeFilter%)+FilterString$
' Первый символ переменной Filter$ - код операции,
' остальные символы - перечень допустимых/НЕдопустимых символов
' CodeFilter%=ASC(Filter$)
' =0 - удаление всех символов из Text$, кроме указанных в
' списке допустимых - FilterString$
' =1 - удаление всех символов из Text$, указанных в
' списке НЕдопустимых - FilterString$
'===============================================================
Temp$ = "": CodeFilter% = ASC(Filter$)
FOR i% = 1 TO LEN(Text$)
Sym$ = MID$(Text$, i%, 1)
IF (SGN(INSTR(2, Filter$, Sym$)) XOR CodeFilter%) <> 0 THEN
Temp$ = Temp$ + Sym$
END IF
NEXT i%
StrFilter$ = Temp$
END FUNCTION
FUNCTION StrFilter$ (Text$, Filter$)
'================================================================
' Фильтрация содержимого Text$
'
' Filter$=CHR$(CodeFilter%)+FilterString$
' Первый символ переменной Filter$ - код операции,
' остальные символы - перечень допустимых/НЕдопустимых символов
' CodeFilter%=ASC(Filter$)
' =0 - удаление всех символов из Text$, кроме указанных в
' списке допустимых - FilterString$
' =1 - удаление всех символов из Text$, указанных в
' списке НЕдопустимых - FilterString$
'===============================================================
Temp$ = "": CodeFilter% = ASC(Filter$)
FOR i% = 1 TO LEN(Text$)
Sym$ = MID$(Text$, i%, 1)
IF (SGN(INSTR(2, Filter$, Sym$)) XOR CodeFilter%) <> 0 THEN
Temp$ = Temp$ + Sym$
END IF
NEXT i%
StrFilter$ = Temp$
END FUNCTION
Метод Replace(old, "")
А вообще не надо их туда, в переменную, заносить. Контролироовать это можно через регулярные выражения.
Все сказанное справедливо для VB.Net.
А вообще не надо их туда, в переменную, заносить. Контролироовать это можно через регулярные выражения.
Все сказанное справедливо для VB.Net.
так и есть, вы правильно думаете
Посмотрите в сторону регулярных выражений (RegExp).
Похожие вопросы
- как в visual basic сделать так чтоб при определенном условии кнопка которую я нажимаю ничего не выполняла?
- как можно удалить темп файлы с помощью visual basic. . как можно удалить темп файлы с помощью visual basic
- Продаю программу с исходниками на Visual Basic 2008 за 50 руб.
- Подойдет ли самоучитель по Visual Basic .NET для освоения языка Basic, человеку не понимающему в программировании?
- Как удалить строку из файла (Visual Basic 6.0)
- Visual Basic или C#
- Нужна помощь по Visual Basic
- visual basic 6
- visual basic 2008
- Программа на Microsoft Visual Basic 2008