Страница: 1 |
Страница: 1 |
Вопрос: Поиск текста: "Только слово целиком"
Добавлено: 11.04.08 18:09
Автор вопроса: Abriel
Будьте добры, подскажите: каким образом в VB .NET 2005 осуществить поиск текста в TextBox с критерием "Только слово целиком", например как в диалоговом окне MS Word "Найти"? Если возможно, в примере!
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 11.04.08 22:16
RegExp.
или поиск выражения с дальнейшей проверкой символов справа\слева от него.
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 12.04.08 00:06
Если слева и/или справа стоит пробельный символ, либо знак препинания, то это целое слово.
Номер ответа: 3
Автор ответа:
Abriel
Вопросов: 18
Ответов: 37
Профиль | | #3
Добавлено: 12.04.08 00:53
Да, благодарю! Немножко разобрался в какую сторону дуть! Если что-нибудь получится, нарисую пример сюда же.
Номер ответа: 4
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #4
Добавлено: 12.04.08 01:12
Если хочешь, я тебе на VB6 пример накатаю
Номер ответа: 5
Автор ответа:
Abriel
Вопросов: 18
Ответов: 37
Профиль | | #5
Добавлено: 12.04.08 03:06
Executioner, интресно, как у тебя это реализовано на VB6?! Если можна, хотел бы взглянуть! А вот к чему я пришел в раздумиях на VB2005:
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-сайт:
Профиль | | #6
Добавлено: 12.04.08 14:50
с использованием microsoft vbscript regexp 5.5
правда знаки препинания надо тоже проверять
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-сайт:
Профиль | | #7
Добавлено: 12.04.08 17:17
\b\w+\b
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #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 кодов и посмотри там
Номер ответа: 10
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #10
Добавлено: 17.04.08 10:26
Забыл еще начало и конец строки, а это еще одна проверка.
Номер ответа: 11
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #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, без символа конца строки.
Конец ПОСЛЕДНЕЙ строки может быть и последним символом текста.