Посимвольная обработка строк

Задача
Нужно обработать каждый символ строки по отдельности.

Решение
Цикл по символам строки с помощью оператора for. В этом примере подсчитываются гласные в строке:

$string = "This weekend, I'm going shopping for a pet chicken.";
$vowels = 0;
for ($i = 0, $j = strlen($string); $i < $j; $i++) {
if (strstr('aeiouAEIOU',$string[$i])) {
$vowels++;
}
}

Обсуждение
Посимвольная обработка – это самый простой способ подсчета последовательности «Смотри и говори»:

function lookandsay($s) {
// инициализируем возвращаемое значение пустой строкой
$r = '';
// переменная $m, которая содержит подсчитываемые символы,
// инициализируется первым символом * в строке
$m = $s[0];
// $n, количество обнаруженных символов $m, инициализируется значением 1
$n = 1;
for ($i = 1, $j = strlen($s); $i < $j; $i++) {
// если символ совпадает с последним символом
if ($s[$i] == $m) {
// увеличиваем на единицу значение счетчика этих символов
$n++;
} else {
// иначе добавляем значение счетчика и символа
к возвращаемому значению //
$r .= $n.$m;
// устанавливаем искомый символ в значение текущего символа //
$m = $s[$i];
// и сбрасываем счетчик в 1 //
$n = 1;
}
}
// возвращаем построенную строку, а также последнее значение
счетчика и символ //
return $r.$n.$m;
}
for ($i = 0, $s = 1; $i < 10; $i++) {
$s = lookandsay($s);
print "$s\n";
}
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211

Это называется последовательностью «Смотри и говори», поскольку каждый элемент мы получаем, глядя на предыдущие элементы и говоря, сколько их.


Например, глядя на первый элемент, 1, мы говорим «один». Следовательно, второй элемент – «11», то есть две единицы, поэтому третий элемент – «21». Он представляет собой одну двойку и одну единицу, поэтому четвертый элемент – «1211» и т. д.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ данных, разделенных запятой
Анализ данных, состоящих из полей фиксированной ширины
Включение функций и выражений в строки
Доступ к подстрокам
Замещение подстрок

Вернуться в раздел: PHP / 1. Строки