Page 1 of 1

Как вытащить цыфры из строки????

Posted: 2005-01-19 00:39:56
by KoK
например есть какое-то событие.
в журнале появляется сторока "text 12987 text"
Как можно вытащить это число в переменную?
можно ли откинуть не нужные буквы из строки и получить число?

Posted: 2005-01-19 02:44:21
by 666Man666
Команда Mid(строка, позиция, число букв) - позиция считается от 0

Posted: 2005-01-19 10:20:43
by Sfagnum
666Man666 wrote:Команда Mid(строка, позиция, число букв) - позиция считается от 0
ну и Val - не забываем ;)

Posted: 2005-01-19 14:39:09
by Edred

Code: Select all

Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
   VAR tmpst
   VAR i, dlin, kol, start
   dlin = len( st )
   kol = 0
   start = 0
   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
endsub

Posted: 2005-02-03 15:31:31
by bewza
А вот мой вариант

Code: Select all

; Получение слова под номером num из строки str, возвращает слово если все нормально, -1 если ошибка.
sub GetWord(num,str)
if IsNumber(num) <> 1 or IsString(str) <> 1 then
return -1
endif
str=Trim(str)
str=str+' '
var cnt=0,ind=0,inds=0,wordr=''
while ind < strlen(str)
if str[ind] == ' ' then
wordr=trim(Mid(str,inds,ind-inds))
if wordr <> '' then
cnt=cnt+1
if cnt == num then
return wordr
endif
endif
inds=ind
endif
ind=ind+1
wend
return -1
end sub

; Ищет заданное слово word в строке str, возвращает 1 если найдено, 0 если не найдено, -1 если ошибка.
sub FindWord(word,str)
if IsString(word) <> 1 or IsString(str) <> 1 then
return -1
endif
str=Trim(str)
word=Trim(word)
str=str+' '
var ind=0,inds=0,wordr=''
while ind < strlen(str)
if str[ind] == ' ' then
wordr=trim(Mid(str,inds,ind-inds))
if wordr == word then
return 1
endif
inds=ind
endif
ind=ind+1
wend
return 0
end sub

Re: Как вытащить цыфры из строки????

Posted: 2005-02-03 18:07:07
by Yoko
KoK wrote:например есть какое-то событие.
в журнале появляется сторока "text 12987 text"
Как можно вытащить это число в переменную?
можно ли откинуть не нужные буквы из строки и получить число?


в принципе есть и отдельная команда, но я о ней особо не обьявлял, так как защиту от дурака не сподобился добавить. как говорится на свой страх и риск используйте

y="text 12987 text"
x=uo.scanint("text %d",y)