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)