Страница: 1 |
Помогите пожалуйста Сделать на VB, очень срочно. "Перечислить все слова заданного предложения, которые состоят из тех же букв, что и первое слово предложения." Зарание СПАСИБО!!! Если можно то с коментариями!.
Dim MyString As String Dim i As Long, j As Long Нужна ссылка на Microsoft VBScript Regular Expression 5.5, которая устанавливается с 5-ым. InternetExplorer-ом. Private Sub Form_Load() Dim str As String Dim first3char As String Dim rx As New RegExp Dim amath As Match Dim mathColl As MatchCollection str = "abc: abc1; abc-2, noabc abc3a's." first3char = Left(str, 3) Debug.Print vbCrLf & first3char With rx .Global = True .IgnoreCase = False .Pattern = "\s?(" & first3char & "[^\s]+)[\.|,|;|:]\s?" End With Set mathColl = rx.Execute(str) For Each amath In mathColl Debug.Print amath.SubMatches(0) Next End Sub второму ответу. Свойство IgnoreCase объекта rx должно быть "True". Ко второму ответу . Я прошу прщщения, patern должен иметь следующий вид - "\s?(" & first3char & "[^\s]+)[;|:|\.|,]?\s?" Спасибо, но: -По первому: Отображается только два слова "вот, слово" а должно еще и "такое" -По второму: Извини но вообще ничего не понял. Спасибо, но: -По первому: Отображается только два слова "вот, слово" а должно еще и "такое" -По второму: Извини но вообще ничего не понял. Вот еще способ: Private Sub Form_Load() Dim str As String Dim firstWord As String Dim rx As New RegExp Dim amath As Match Dim mathColl As MatchCollection Dim char As String Dim char_array() Dim bFound As Boolean Debug.Print Set dic = New Collection str = "abc cba bdfg kjhgf adire " With rx .Global = True .IgnoreCase = True End With rx.Pattern = "^[^\s]+\s" Set mathColl = rx.Execute(str) firstWord = mathColl(0) For i = 1 To Len(firstWord) char = Mid(firstWord, i, 1) ReDim Preserve char_array(i - 1) char_array(i - 1) = char Next rx.Pattern = "\s?([^\s]+)\s?" Set mathColl = rx.Execute(str) For Each amath In mathColl For i = 0 To UBound(char_array) rx.Pattern = char_array(i) If rx.Test(amath.SubMatches(0)) Then Debug.Print amath.SubMatches(0) Exit For End If Next Next End Sub Страница: 1 |
Вопрос: Помогите пожалуйста Сделать на VB, очень срочно.
Добавлено: 08.05.04 13:03
Автор вопроса: Grommy
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 08.05.04 14:31
Dim SplitArray
Dim OutPutString As String
Private Sub Form_Load()
' здесь твоё предложение:
MyString = "Эждлогтрнпекуцыворпeвс вот такое слово"
' перевели все буквы в прописные:
MyString = LCase(MyString)
'разбиваем предложение на отдельные слова, разделитель слов - пробел
'слова будут собраны в массиве SplitArray
SplitArray = Split(MyString, " ")
' начиная со второго слова (первое проверять не будем )
For i = 1 To UBound(SplitArray)
'проверяем каждую букву слова
For j = 1 To Len(SplitArray(i))
'содержится она в первом слове или нет
If InStr(SplitArray(0), Mid(SplitArray(i), j, 1)) = 0 Then
'если не содержится, переходим к следующему слову
GoTo lbl_next
End If
'если дошли до сюда, значит буква есть в первом слове, смотрим следующую букву
Next j
' а если мы дошли до сюда, значит все буквы слова есть в первом слове
' и запишем это слово в выходную переменную(опять же с разделителем " " - пробел)
OutPutString = OutPutString & SplitArray(i) & " "
lbl_next:
'здесь переход к следующему слову предложения
Next i
' в выходной переменной отрезаем лишний пробел.
OutPutString = Trim$(OutPutString)
'в ней теперь содержатся все слова, состоящие только из букв первого слова
Debug.Print OutPutString
'можно снова разбить эту переменную на отдельные слова и запихать в массив
SplitArray = Split(OutPutString, " ")
' и получить каждое слово массива в отдельности:
For i = 0 To UBound(SplitArray)
MsgBox SplitArray(i)
Next i
End Sub
Номер ответа: 2
Автор ответа:
Gelo###
Вопросов: 1
Ответов: 5
Web-сайт:
Профиль | | #2
Добавлено: 08.05.04 14:33
Номер ответа: 3
Автор ответа:
Gelo###
Вопросов: 1
Ответов: 5
Web-сайт:
Профиль | | #3
Добавлено: 08.05.04 14:40
Номер ответа: 4
Автор ответа:
Gelo###
Вопросов: 1
Ответов: 5
Web-сайт:
Профиль | | #4
Добавлено: 08.05.04 15:15
Номер ответа: 5
Автор ответа:
Grommy
Вопросов: 3
Ответов: 5
Профиль | | #5
Добавлено: 08.05.04 15:59
Номер ответа: 6
Автор ответа:
Grommy
Вопросов: 3
Ответов: 5
Профиль | | #6
Добавлено: 08.05.04 15:59
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 08.05.04 17:31
Ну так всё правильно, ты же хотел получить слова, состоящие только из букв входящих в состав первого слова. А в слове "такое" встречается буква "а", которой в первом слове нет. Поэтому слово "такое" и не попало в список искомых слов. Специально первое слова придумывал, чтобы в нем "а" не встречалось.
Номер ответа: 8
Автор ответа:
Gelo###
Вопросов: 1
Ответов: 5
Web-сайт:
Профиль | | #8
Добавлено: 08.05.04 18:16