Страница: 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