| Предыдущая тема :: Следующая тема | 
	
	
		| Автор | Сообщение | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Пн Апр 28 2003 15:41    Заголовок сообщения: Вопрос по Perlу |   |  
				| 
 |  
				| Может это глупо, но у меня долго и упорно описанное ниже не получается. Есть массив, в качестве элементов которого стоят некоторые строки и есть одна большая строка, которую надо проверить на наличие в ней элементов массива. Т.е. элемент массива может входить в строку, но не может полностью совпадать с ней. Подскажите, плиз, как осуществить такую проверку.
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| FFF Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 08:18    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| вот самый простой вариант Вашей программы (как я ее поня). В ней проверяется вхождение, которое может быть и полным совпадением 
 #!/usr/bin/perl
 use English;
 
 #поиск в строке массива подстрок.
 #
 
 @ar_str=("строка 1", "string 2", "ssss 55","tttt"); ##массив строк
 $str_gr="в этой строке ищем string 2 ttttttttt"; ##одна большая строка
 
 foreach $ss (@ar_str) { ##по элементам массива строк
 if (index($str_gr, $ss) } -1) ##подстрока найдена
 {
 print("\n найдена подстрока: ", $ss);
 }
 } ## foreach $ss (@ar_str)
 
 !! символ } в операторе if надо заменить на знак БОЛЬШЕ (боюсь, что угловую скобку не пропустит скрипт форума)
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 15:40    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| хммм а что такое index($str_gr, $ss) ?
 что делает index?
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 15:59    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| программа выглядит примерно так: ...
 @ar_str=...;
 foreach() #здесь обновляется $str_gr
 {
 if ( здесь надо проверить $str_gr на наличие в ней элементов массива @ar_str)
 {}
 }
 
 
 ЗЫ: спасибо за ответ, кстати
  |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 15:59    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| программа выглядит примерно так: ...
 @ar_str=...;
 foreach() #здесь обновляется $str_gr
 {
 if ( здесь надо проверить $str_gr на наличие в ней элементов массива @ar_str)
 {}
 }
 
 
 ЗЫ: спасибо за ответ, кстати
  |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| FFF Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 16:02    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| index как раз и ищет вхождение подстроки в строку. Неужели у Вас нет справочника по Perl ? |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Вт Апр 29 2003 18:32    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| И возвращает, если находит подстроку? 
 Учебник есть, но там не нашел, а то, что нашел в инете - малопонятно
  или я такой тупой  Спасибо!
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| studentik Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Апр 30 2003 09:06    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| И что возвращает, если находит подстроку? |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| FFF Гость
 
 
 
 
 
 
 | 
			
				|  Добавлено: Ср Апр 30 2003 16:11    Заголовок сообщения: Re: Вопрос по Perlу |   |  
				| 
 |  
				| возвращает номер позиции, с которой обнаружено 1ое вхождение подстроки. (символы в строке нумеруются с 0). 
 If the string contains the substring at more than one location, the index function returns the leftmost location. To find later locations, you can give index a third parameter. This parameter is the minimum value that will be returned by index, allowing you to look for the next occurrence of the substring that follows a selected position. This index looks like this:
 
 $x = index($bigstring,$littlestring,$skip);
 
 $skip -- с какого символа начинать поиск. если этот параметр опущен, то поиск ведется с начала строки (т.е. с 0го символа ).
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		|  |