Page 1 of 1

Вопрос: Поиск в строке...

Posted: 2006-04-30 20:50:30
by DerMeister =)
Вот задача: Имеется две строки, надо определить является ли строка 1 частью строки 2...
Помогите пожалуйста...

Желательно получить процедуру, которая возвращает либо true, либо false:

Code: Select all

FindInString(string1,string2)

Поиск лучше вести с конца строки...

Posted: 2006-04-30 22:09:16
by admir

Code: Select all

#string1 - main ,string2 -compare with string1
sub FindInString(string1,string2)
  if len(string1)<len(string2) then
    return 0
  end if 
  for var i=0 to (len(string1)-len(string2))
      if mid(string1,i,len(string2)) == string2 then
          return 1
      end if
  next
  return 0
end sub

Posted: 2006-04-30 22:19:27
by DerMeister =)
admir wrote:

Code: Select all

#string1 - main ,string2 -compare with string1
sub FindInString(string1,string2)
  if len(string1)<len(string2) then
    return 0
  end if 
  var i,l
  for i=0 to (len(string1)-len(string2))
      if mid(string1,i,len(string2)) == string2 then
          return 1
      end if
  next
  return 0
end sub


:D Круто! Спасибо! Только помоему эта процедура ищет слева направо...

С права на лево,наверное, будет так:

Code: Select all

#string1 - main ,string2 -compare with string1
sub FindInString(string1,string2)
  if len(string1)<len(string2) then
    return 0
  end if 
  var i,l
  for i=(len(string1)-len(string2)) to 0 step -1
      if mid(string1,i,len(string2)) == string2 then
          return 1
      end if
  next
  return 0
end sub

Posted: 2006-04-30 23:19:40
by Edred
admir wrote:

Code: Select all

#string1 - main ,string2 -compare with string1
sub FindInString(string1,string2)
  if len(string1)<len(string2) then
    return 0
  end if 
  for var i=0 to (len(string1)-len(string2))
      if mid(string1,i,len(string2)) == string2 then
          return 1
      end if
  next
  return 0
end sub


Доработай эту функцию чтобы она возвращала позицию начала подстроки в строке, 0 - если не найдено. И будет хорошая стандартная функция.