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

Ask for help

Moderators: Murderator+, Murderator

Post Reply
KoK
Posts: 4
Joined: 2004-08-31 08:45:10

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

Post by KoK »

например есть какое-то событие.
в журнале появляется сторока "text 12987 text"
Как можно вытащить это число в переменную?
можно ли откинуть не нужные буквы из строки и получить число?
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

Команда Mid(строка, позиция, число букв) - позиция считается от 0
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

666Man666 wrote:Команда Mid(строка, позиция, число букв) - позиция считается от 0
ну и Val - не забываем ;)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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
bewza
Junior Expert
Posts: 30
Joined: 2004-04-10 11:37:18

Post 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
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

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

Post by Yoko »

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


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

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