Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Поиск текста: "Только слово целиком" Добавлено: 11.04.08 18:09  

Автор вопроса:  Abriel
Будьте добры, подскажите: каким образом в VB .NET 2005 осуществить поиск текста в TextBox с критерием "Только слово целиком", например как в диалоговом окне MS Word "Найти"? Если возможно, в примере!

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 11.04.08 22:16
RegExp.
или поиск выражения с дальнейшей проверкой символов справа\слева от него.

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 12.04.08 00:06
Если слева и/или справа стоит пробельный символ, либо знак препинания, то это целое слово.

Ответить

Номер ответа: 3
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #3 Добавлено: 12.04.08 00:53
Да, благодарю! Немножко разобрался в какую сторону дуть! Если что-нибудь получится, нарисую пример сюда же.

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 12.04.08 01:12
Если хочешь, я тебе на VB6 пример накатаю

Ответить

Номер ответа: 5
Автор ответа:
 Abriel



Вопросов: 18
Ответов: 37
 Профиль | | #5 Добавлено: 12.04.08 03:06
Executioner, интресно, как у тебя это реализовано на VB6?! Если можна, хотел бы взглянуть! ;) А вот к чему я пришел в раздумиях на VB2005:

Dim SrcText As String = TextBox1.Text
Dim FndWord As String = InputBox("Enter searched word:", "Searched for...";).ToString
Dim Position As Integer = SrcText.IndexOf(FndWord, 0)
Dim chrLeft As Char = SrcText.Chars(Position - 1)
Dim chrRight As Char = SrcText.Chars(Position + FndWord.Length)

If (Char.IsPunctuation(chrLeft) Or Char.IsSeparator(chrLeft) Or Char.IsWhiteSpace(chrLeft)) _
And (Char.IsPunctuation(chrRight) Or Char.IsSeparator(chrRight) Or Char.IsWhiteSpace(chrRight)) _
Then TextBox1.Select(Position, FndWord.Length)


Надеюсь существует способ лаконичней и коректней!
Да, еще нужно обработать ошибки, когда Char Index за пределами масс. символов Chars.
Добавляйте идеи!!!

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 12.04.08 14:50
с использованием microsoft vbscript regexp 5.5
правда знаки препинания надо тоже проверять
Option Explicit

Private Sub Form_Load()
Dim re As New RegExp
Dim testString As String
Dim iMatch As Match ' один из совпавших образцов
Dim cMatch As MatchCollection ' коллекция этих образцов

re.Global = True
re.IgnoreCase = True
re.MultiLine = True
Const STR As String = "Шесть" 'Строка которую ищем

re.Pattern = "[ \t\r\n\v\f]" & STR & "[ \t\r\n\v\f]"

testString = "Шесть Один Два Три Четыре Пять" & vbNewLine _
            & "Шесть Семь Восемь Девять" & "Один Два Три Четыре Пять" & vbNewLine _
            & "Шесть Семь Восемь Девять Ноль" 'Строка в которой ищем STR

Set cMatch = re.Execute(" " & testString & " ";)
For Each iMatch In cMatch ' проходим по всей коллекции
    Debug.Print iMatch.FirstIndex + 1, Mid(iMatch.Value, 2, Len(iMatch.Value) - 2)
Next iMatch
End Sub

на "пуре" VB6 не успел сделать)) ..позже

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 12.04.08 17:17
\b\w+\b

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 12.04.08 18:41
\b граница слова
\w Любой символ, образующий "слово"
о, классно! ... вот только ms vbscript regexp 5.5 походу это не поддерживает. или ошибаюсь?

Ответить

Номер ответа: 9
Автор ответа:
 FLUDER@$T



Вопросов: 14
Ответов: 37
 Профиль | | #9 Добавлено: 16.04.08 23:26
возьми табл. ACkey кодов и посмотри там
if asc (mid('допишешь сам) <=95'помоему then ...

Ответить

Номер ответа: 10
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #10
Добавлено: 17.04.08 10:26
Если слева и/или справа стоит пробельный символ, либо знак препинания, то это целое слово.

Забыл еще начало и конец строки, а это еще одна проверка.

Ответить

Номер ответа: 11
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #11
Добавлено: 17.04.08 11:06
Конец строки есть пробельные символы, вообще-то, если ты не знал...

Ответить

Номер ответа: 12
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #12
Добавлено: 17.04.08 11:51
В VB6 конец строки это Instr (строка, vbCrLf)

Ответить

Номер ответа: 13
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #13
Добавлено: 17.04.08 11:53
Instr (строка, vbCrLf) - 1, без символа конца строки.
Конец ПОСЛЕДНЕЙ строки может быть и последним символом текста.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам