Page 1 of 1

Проблема с GetWord.

Posted: 2012-01-29 01:23:49
by Mirage

Code: Select all

Sub GetWord( st, nom )
    ; (c) Edred
    ; Возвращает слово из строки str за номером num
    ; если такого слова нет - возвращаем ''
    ;
    ; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
    ; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
    ;
    VAR tmpst, i, dlin, kol = 0, start = 0
    dlin = len( st )
    For i=0 To dlin - 1
        If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
            kol = kol + 1
            If kol == nom Then
                ; это первый пробел после нужного нам слова
                tmpst = mid( st, start, i - start )
                return tmpst
            Else
                While mid( st, i, 1 ) == ' '
                    i = i + 1
                Wend
                If kol == nom - 1 Then
                    start = i
                Endif
            Endif
        Endif
    Next
    tmpst = ''
    return tmpst
end sub


Заметил странность. Почему то не пропечатывает последний символ последнего в строке слова.
str = 'на улице было 20 градусов мороза'
GetWord( str, 4 ) = 20
GetWord( str, 2 ) = улице

НО
GetWord( str, 6 ) = мороз
а потерялось.
Это у меня так глючит или так и задумано? :cry:

Re: Проблема с GetWord.

Posted: 2012-01-29 02:02:35
by Mirage
Сам разобрался. :mrgreen:
Новый вариант процедуры вот там.

Re: Проблема с GetWord.

Posted: 2012-01-29 08:13:11
by Gromiz
а для чего сам скрип-То? :oops:

Re: Проблема с GetWord.

Posted: 2012-01-29 09:09:11
by Mirage
чтобы работать с текстом ;)

Re: Проблема с GetWord.

Posted: 2012-01-30 19:51:34
by Gromiz
для бота рекламщика, например?
или оно наоборот - считывает?

диковенное писание :)