Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 0
Регистрация: 02.12.2010
Сообщений: 26
1

Преобразовать строку, удалив все символы, не являющиеся буквами или цифрами

02.12.2010, 21:40. Просмотров 1486. Ответов 11
Метки нет (Все метки)


есть задача: дана текстовая строка, состоящая из букв и цифр. Преобразовать строку, удалив все символы, не являющиеся буквами или цифрами, и заменив каждую большую букву одноименной малой. написал следующий код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private Sub Command2_Click()
Dim s As String
Dim a() As Integer
Dim s1 As String
s = InputBox("введите строку")
k = Len(s)
ReDim a(1 To k)
For i = 1 To k
a(i) = Asc(Mid(s, i, 1))
Next i
s1 = ""
For i = 1 To k
If (a(i) > 48) And (a(i) < 57) And (a(i) > 97) And (a(i) < 122) And (a(i) > 65) And (a(i) < 90) Then s1 = s1 & Chr(a(i))
'48-57 - код цифр от 0 до 9
'97-122 - код малых английских букв от a до z
'65-90 - код больших английских букв от A до Z
Next i
s1 = LCase(s1)
Print s1
End Sub
но, к сожалению, после выполнения программы в левом верхнем углу ничего не появляется, хотя там должна появиться строка s1. в чём же дело?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2010, 21:40
Ответы с готовыми решениями:

Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами
1. Дана строка символов. Преобразовать строку, удалив из нее все символы, не являющиеся буквами...

Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами
Дана строка символов. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или...

Преобразовать строку, удалив из неё все символы, не являющиеся буквами или цифрами
Дана строка символов. Преобразовать строку, удалив из неё все символы, не являющиеся буквами или...

Обработка строк. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами
Дана строка символов. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или...

__________________
Помогаю в написании студенческих работ здесь.
11
исследователь
324 / 102 / 3
Регистрация: 18.03.2010
Сообщений: 1,079
Записей в блоге: 2
02.12.2010, 22:12 2
Я думаю что для преобразования регистра символов можно использовать uppercase (тоже что и ucase в vba)
0
3 / 3 / 0
Регистрация: 02.12.2010
Сообщений: 26
02.12.2010, 22:25  [ТС] 3
Цитата Сообщение от <Профессор> Посмотреть сообщение
Я думаю что для преобразования регистра символов можно использовать uppercase (тоже что и ucase в vba)
так можно и через LCase осуществить необходимую операцию. но проблема, что не выводиться необходимая строка, кроется видимо не в этом.
0
исследователь
324 / 102 / 3
Регистрация: 18.03.2010
Сообщений: 1,079
Записей в блоге: 2
02.12.2010, 22:37 4
Цитата Сообщение от kindvad Посмотреть сообщение
так можно и через LCase осуществить необходимую операцию. но проблема, что не выводиться необходимая строка, кроется видимо не в этом.
s=LCase(s)
1
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
02.12.2010, 22:44 5
твоя 13 (блин ) строка
Visual Basic
1
If (a(i) > 48) And (a(i) < 57) Or (a(i) > 97) And (a(i) < 122) Or (a(i) > 65) And (a(i) < 90) Then s1 = s1 & Chr(a(i))
1
3 / 3 / 0
Регистрация: 02.12.2010
Сообщений: 26
02.12.2010, 22:58  [ТС] 6
Цитата Сообщение от <Профессор> Посмотреть сообщение
s=LCase(s)
понял вашу идею. решил сразу в исходной строке изменить её регистр, тем самым отпала необходимость в условном операторе описывать условие с большими буквами.
gaw, спасибо. замечание действительно существенное.
исправленный код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Command2_Click()
Dim s As String
Dim a() As Integer
Dim s1 As String
s = InputBox("ââåäèòå ñòðîêó")
s = LCase(s)
k = Len(s)
ReDim a(1 To k)
For i = 1 To k
a(i) = Asc(Mid(s, i, 1))
Next i
s1 = ""
For i = 1 To k
If ((a(i) > 48) And (a(i) < 57)) Or ((a(i) > 97) And (a(i) < 122)) Then s1 = s1 & Chr(a(i))
Next i
Print s1
End Sub
Добавлено через 13 минут
при данном коде и при вводе строки "5a *9Z" выводиться результат 5.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
02.12.2010, 22:58 7
как это не выводится, может русскими пишешь ?
а , выводится, только не то
0
3 / 3 / 0
Регистрация: 02.12.2010
Сообщений: 26
02.12.2010, 23:02  [ТС] 8
gaw, да, именно.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
02.12.2010, 23:03 9
Visual Basic
1
If ((a(i) >= 48) And (a(i) <= 57)) Or ((a(i) >= 97) And (a(i) <= 122)) Then s1 = s1 & Chr(a(i))
1
3 / 3 / 0
Регистрация: 02.12.2010
Сообщений: 26
02.12.2010, 23:06  [ТС] 10
gaw, спасибо. ведь я вводил как раз крайние элементы этого промежутка, которые не указал в коде.
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
03.12.2010, 00:14 11
Не оптимально как-то. Можно без массива в один цикл. И лучше использовать не If, а Select Case (ИМХО)
0
Частенько бываю
749 / 330 / 42
Регистрация: 20.06.2007
Сообщений: 854
03.12.2010, 07:14 12
С помощью регулярных выражений:
Visual Basic
1
2
3
4
5
6
7
8
'Project - References - Подключить "Microsoft VBScript Regular Expressions"
Sub DelNonLetNum()
Dim sSource As String, cRgExp As New RegExp
sSource = InputBox("Ввод строки:", , "13 __  CheCk ПроВерКа -][\/ ЗАданИя 984//")
cRgExp.Global = True
cRgExp.Pattern = "[^\ a-zA-Zà-ÿÀ-ß0-9]"
MsgBox sSource & vbNewLine & LCase(cRgExp.Replace(sSource, ""))
End Sub
Добавлено через 23 минуты
Штатными средствами:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub DelNonLetNum()
Dim sSource As String, sDest As String, sChar As String, iChar As Integer
sSource = InputBox("Ввод строки:", , "13 __  CheCk ПроВерКа -][\/ ЗАданИя 984//")
For i = 1 To Len(sSource)
    sChar = Mid(sSource, i, 1)
    Select Case Asc(sChar)
        Case 32, 48 To 57, 65 To 90, 97 To 122, 192 To 255: sDest = sDest & sChar
    End Select
Next
MsgBox sSource & vbNewLine & LCase(sDest)
End Sub
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2010, 07:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Преобразовать последовательность S1,...,Sn , удалив все символы, не являющиеся буквами или цифрами
Даны натуральное число n, символы S1,...,Sn. Преобразовать последовательность S1,...,Sn , удалив...

Преобразовать последовательность, удалив все символы, не являющиеся буквами и цифрами
здравствуйте, попалась мне задачка ваще подстава-подстав по символьному типу: Даны символы...

Преобразовать строку символов, удалив из нее все символы, не являющиеся буквами
Прошу Вас, помогите! Дана строка символов. преобразовать строку символов, удалив из нее все...

Преобразовать строку символов, удалив из нее все символы, не являющиеся буквами
доброе время суток,Уважаемые знатоки...собственно вопрос вот в чем:Дана строка символов....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.