Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Orastar
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 34
1

Как обойти регистр в replace или regEx

21.05.2011, 18:41. Просмотров 1229. Ответов 8
Метки нет (Все метки)

Суть проблемы:
Делаю поиск, нужно чтобы при выведении результатов поиска, найденные слова или части слов выделялись, к примеру жирным шрифтом, но при этом сохранялся регистр букв.
К примеру если делаю через REPLACE

rName = Replace(rs('Name'), request('Name'), '<b>' & request('Name') & '</b>')

то если пользователь вводит слово с маленькой буквы, а в БД оно начинается с большой, то результат не выделяется жирным шрифтом, а если делать через regEx

Set regexp = CreateObject('VBScript.RegExp')
With RegExp
.Global = True
.IgnoreCase = True
.Pattern = request('name')
rName = .Replace(rs('Name'), '<b>' & request('Name') & '</b>')
End With
Set regexp = Nothing

То в результатах поиска меняется регистр на тот, который пользователь ввел в форме поиска.

Вопрос: Как сделать так чтобы и регистр сохранялся такой же как в базе и чтобы слова выделялись жирным при несовпадении регистров?
Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 18:41
Ответы с готовыми решениями:

Regex.Replace
Доброго времени суток :) Есть проблема с заменой строки с помощью рег. выражений. Допустим, есть...

Regex.Replace игнорирование спецсимволов
Есть код var tmp = Regex.Replace(str, &quot;&lt;Аванс?/&gt;&quot;, &quot;на что заменяем&quot;, RegexOptions.IgnoreCase);...

Как конвертнуть строку в текст(номер), или как обойти такую ситуацию....?
Код: &lt;% quarter=request('quarter') year_=request('year') if quarter='' and year_='' then ...

Regex.Replace и делегат MatchEvaluator. Как упростить код?
Здраствуйте уважаемые знатоки. В коде ниже - пример обработки строки при помощи MatchEvaluator....

Regex.Replace
Привет всем! Я парсю пользователей 1 сайта и я вроде нашел между какими тэгами заключены...

8
inferno
22.05.2011, 09:09 2
Попробуй использовать коллекцию Match:
Код
...
Set Matches = regEx.Execute(strng) ' Execute search.
For Each Match in Matches   ' Iterate Matches collection.
...
заменяем оригинал на '<B>' & оригинал & '</B>' ...
...
Next
...
bazile
67 / 43 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
22.05.2011, 10:13 3
Вот так попробуй
.Pattern = '(' & request('name') & ')'
rName = .Replace(rs('Name'), '<b>$1</b>')
0
Orastar
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 34
22.05.2011, 14:58  [ТС] 4
bazile, спасибо!
Все получилось.
0
22.05.2011, 14:58
bazile
67 / 43 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
22.05.2011, 15:06 5
Имей в виду что этот способ будет работать неправильно, если внутри строки будет спец. символы регулярных выражений.
Надо заменять
на \
( на (
) на )
{ на {
} на }
[ на [
] на ]
^ на ^
$ на $
0
Orastar
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 34
22.05.2011, 15:56  [ТС] 6
Спасибо за совет. Не знал.
Это так делается?

Set regexp = CreateObject('VBScript.RegExp')
pattern = Replace(rs('Name'), ' ', '\ ')
pattern = Replace(rs('Name'), '^', '^')
pattern = Replace(rs('Name'), '$', '$')
pattern = Replace(rs('Name'), '.', '.')
pattern = Replace(rs('Name'), '?', '?')
pattern = Replace(rs('Name'), '*', '*')
pattern = Replace(rs('Name'), '+', '+')
pattern = Replace(rs('Name'), '{', '{')
pattern = Replace(rs('Name'), '}', '}')
pattern = Replace(rs('Name'), '(', '(')
pattern = Replace(rs('Name'), ')', ')')
pattern = Replace(rs('Name'), '|', '|')
0
bazile
67 / 43 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
22.05.2011, 16:53 7
Почти. Лучше все-таки так

pattern = rs('Name')
pattern = Replace(pattern, ' ', '\ ')
pattern = Replace(pattern, '^', '^')
pattern = Replace(pattern, '$', '$')
pattern = Replace(pattern, '.', '.')
pattern = Replace(pattern, '?', '?')
pattern = Replace(pattern, '*', '*')
pattern = Replace(pattern, '+', '+')
pattern = Replace(pattern, '{', '{')
pattern = Replace(pattern, '}', '}')
pattern = Replace(pattern, '(', '(')
pattern = Replace(pattern, ')', ')')
pattern = Replace(pattern, '|', '|')
0
Orastar
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 34
22.05.2011, 17:00  [ТС] 8
Большое спасибо за ответы!
0
bazile
67 / 43 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
22.05.2011, 17:01 9
На здоровье
0
22.05.2011, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 17:01

Несколько последовательных замен Regex.Replace
Доброго Вам дня! Прошу консультации то регулярным выражениям, а конкретно по такому случаю:...

Можно ли метод Regex.Replace привести к типу MatchCollection
Вот необходимо именно к типу MatchCollection привести, подходящего способа не нашла. Знаю что из...

replace или как убрать <>
При использовании AJAX(чат) я посылаю сообщение с &lt; или &gt; и у меня забивает всё ошибками. Моё...


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

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

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