Перейти к содержанию

Подстрока

Материал из Мегавики — свободной энциклопедии

В информатике подстрока — это непустая связная часть строки.

Формальное определение[править]

Пусть L=c0cn1 — строка длины n.

Любая строка S=cicj, где 0ijn1, является подстрокой L длины ji+1.

  • Если i=0, то S называется префиксом L длины j+1.
  • Если j=n1, то S — суффикс L длины ji+1.

Пример[править]

С точки зрения информатики строки «универс», «Руни», «салис» являются подстроками строки «Руниверсалис»; при этом «Руни» — префиксом, а «салис» — суффиксом.

Руниверсалис
||||||||||||
|универс||||
||||   |||||
Руни   |||||
       салис

Получение подстроки[править]

Если line — исходная строка, begin — индекс первого символа подстроки, end — индекс последнего символа подстроки, то подстрока subline вычисляется следующим образом:

В языке C[править]

char* subline = ( char* )malloc( end - begin + 2 );
memcpy( subline, line + begin, end - begin + 1 );
subline[ end - begin + 1 ] = '\0';

В языке Python[править]

subline = line[begin:end+1]

В языке python подстрока является слайсом (срезом) (англ. slice, array slicing).

В языке Perl[править]

my $subline = substr $line, $begin, $end - $begin + 1;

В языке PHP[править]

$subline = substr($line, $begin, $end - $begin + 1);

В языке Pascal[править]

subline := Copy(line, _begin, _end - _begin + 1);

В языке Ruby[править]

subline = line[start..end]

В языке Java

subline = line.substring(begin,end+1)

Операции с подстрокой[править]

Помимо простой задачи выделения подстроки из строки по двум индексам существует и более сложная задача поиска индексов, указывающих на заданную подстроку в строке (поиск вхождения подстроки в строку).

См. также[править]