например есть какое-то событие.
в журнале появляется сторока "text 12987 text"
Как можно вытащить это число в переменную?
можно ли откинуть не нужные буквы из строки и получить число?
Как вытащить цыфры из строки????
Moderators: Murderator+, Murderator
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
А вот мой вариант
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: Как вытащить цыфры из строки????
KoK wrote:например есть какое-то событие.
в журнале появляется сторока "text 12987 text"
Как можно вытащить это число в переменную?
можно ли откинуть не нужные буквы из строки и получить число?
в принципе есть и отдельная команда, но я о ней особо не обьявлял, так как защиту от дурака не сподобился добавить. как говорится на свой страх и риск используйте
y="text 12987 text"
x=uo.scanint("text %d",y)