:: Visual Foxpro, Foxpro for DOS
OCCURS() + только слово целиком
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Уважаемые форумчане !
Не хочу изобретать велосипед, но есть ли у кого альтернатива функции OCCURS(), но только с признаком искать "слово целиком" (Match whole word) ?
к примеру :
? myOCCURS('sod','strsod') - возвращала бы 0
? myOCCURS('strsod','strsod') - возвращала бы 1
Спасибо.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
StasKryzh

Сообщений: 14
Дата регистрации: 26.09.2009
Как вариант - добавить строке поиска и строке в которой ищем по пробелу вначале и в конце, и сделать для строки в которой ищем ChrTtran() для символов пунктуации с заменой их на пробел.

proc myOccurs(p1, p2)
cRepl = ".,?!" && тут простор для вариантов...
Return OCCURS(" " + p1 + " "," " + ChrTran(p2, cRepl, Space(Len(cRepl)) + " "))
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
StasKryzh
Как вариант - добавить строке поиска и строке в которой ищем по пробелу вначале и в конце, и сделать для строки в которой ищем ChrTtran() для символов пунктуации с заменой их на пробел.
proc myOccurs(p1, p2)
cRepl = ".,?!" && тут простор для вариантов...
Return OCCURS(" " + p1 + " "," " + ChrTran(p2, cRepl, Space(Len(cRepl)) + " "))

? myOccurs('strsod', 'strsod') && возвращает 0, а надо 1


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
StasKryzh

Сообщений: 14
Дата регистрации: 26.09.2009
скобка была не там)))

return OCCURS(" " + p1 + " "," " + ChrTran(p2, cRepl, Space(Len(cRepl))) + " ")
Ratings: 0 negative/1 positive
Re: OCCURS() + только слово целиком
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Я так понимаю, что строка в которой ищем может быть из нескольких слов или даже строк?

Я в своё время ничего не придумал кроме как перебирать все вхождения и анализировать символ до и после найденного.
Процедура строк 20.



Исправлено 1 раз(а). Последнее : Taran, 17.11.19 18:43
Ratings: 0 negative/1 positive
Re: OCCURS() + только слово целиком
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Станислав и Олег, спасибо за идею. Разобрался.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
leonid

Сообщений: 3202
Откуда: Рига
Дата регистрации: 03.02.2006
StasKryzh
Как вариант - добавить строке поиска и строке в которой ищем по пробелу вначале и в конце, и сделать для строки в которой ищем ChrTtran() для символов пунктуации с заменой их на пробел.
proc myOccurs(p1, p2)
cRepl = ".,?!" && тут простор для вариантов...
Return OCCURS(" " + p1 + " "," " + ChrTran(p2, cRepl, Space(Len(cRepl)) + " "))


Попробуйте
? myOccurs('a', 'a a')
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
StasKryzh

Сообщений: 14
Дата регистрации: 26.09.2009
leonid
Попробуйте
? myOccurs('a', 'a a')

если использовать Return из откорректированного варианта в 4 сообщении - вернет 2. А сколько должно быть?


Пардон, проверил. Нужно добавить StrTran(p2, Space(1), Space(2))
Я высказал идею.. я допиливать можно долго для всевозможных вариантов....



Исправлено 1 раз(а). Последнее : StasKryzh, 17.11.19 19:36
Ratings: 0 negative/0 positive
Re: OCCURS() + только слово целиком
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Небольшой добавчик.
Если пойдешь по моему пути, то для анализа символа слева и справа кроме isdigit() и isalfa() вероятно надо проверить и на '_'.
Я писал для анализа кода, поэтому критично.

Ну и, пардон, несколько не полна постановка.
a:a - два целых 'a' содержит или ни одного?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 14 OlegA Rifat  (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика