Тестирование палиндрома часть 1

Тестирование палиндрома - часть 1

Это стандартная задача, которую часто приводят в пример при изучении языка программирования..

Сама задача стимулирует мышление в поисках решения и часто приводит к знакомству с возможностями языка..

Палиндромы — это слова, которые при обратном чтении выглядят так же, как при прямом чтении..

Палиндромы — это слова «ноготки» и «наводнение», а также выражения «ангел лег» и «толстый лебедь»..

В случае словосочетаний и выражений, состоящих из нескольких слов, пробелы можно игнорировать, поэтому фраза «I love match and boza» также является палиндромом..

Подход

В программировании часто бывает, что одна и та же цель достигается несколькими способами. Итак, давайте посмотрим на несколько решений.

При тестировании мы будем использовать выражение: «Если бы у меня был Hi-Fi»..

Всегда ищите подходящие тесты для данной функциональности. Если бы я использовал, например, только «SOS», я мог бы опустить условие, что интервалы можно игнорировать. Более того, в приведенном выше выражении у нас даже есть дефис как особый знак.

Читать также:  Различия в HTML4 и HTML5

Чем больше конкретных случаев мы тестируем, тем больше мы можем быть уверены в том, что наш скрипт работает правильно..

Игнорировать символы, отличные от букв

Для начала нам нужно будет найти способ игнорировать все символы, кроме букв..

Для этого мы можем использовать str_replace.

Игнорировать пробелы

Если бы игнорирования пробелов было достаточно, мы могли бы написать:

$ test = ‘Если бы у меня был Hi-Fi’;
$ упрощенный = str_replace (», », $ test);
echo $ упрощенный;

Это принесет "IfIHadaHi-Fi".

Работа функции str_replace должна быть знакома из урока «Начало работы с PHP — текстовые функции».

Убрать дефис после пробелов

Проблема, однако, в тире. Итак, мы можем вызвать функцию второй раз:

$ test = ‘Если бы у меня был Hi-Fi’;
$ упрощенный = str_replace (‘-‘, », str_replace (», », $ test));
echo $ упрощенный;

Читать также:  Начало работы с PHP часть 2

Результат первого вызова функции передается второму вызову функции. Для большей читабельности мы можем написать это так:

$ test = ‘Если бы у меня был Hi-Fi’;
$ no_spaces = str_replace (», », $ test); $ no_spaces_and_dashes = str_replace (‘-‘, », $ no_spaces);
эхо $ no_spaces_and_dashes;

Обратите внимание на названия переменных. Новички виноваты в вызове исходного текста при втором вызове функции. Однако он по-прежнему содержит пробелы, а затем исчезают только дефисы..

Заменить всех персонажей

Таким образом, мы можем скопировать функцию еще несколько раз для других специальных символов:

$ test = ‘Если бы у меня был Hi-Fi’;
$ упрощенный = str_replace (», », $ test); $ упрощенный = str_replace (‘-‘, », $ упрощенный); $ упрощенный = str_replace (‘,’, », $ упрощенный); $ упрощенный = str_replace (‘.’, », $ упрощенный);
echo $ упрощенный;

Этот способ перечисления всех символов не очень уместен и приводит к большому количеству кода..

Массивы вместо повторного вызова функции

Если вы внимательно прочитали описание функции str_replace, вы, возможно, заметили, что для поиска и замены можно отправлять не только текст, но и массивы. Тогда элементы из первого будут заменены соответствующими элементами из второго..

Читать также:  Пользовательский параллакс без какихлибо библиотек

Мы можем переписать код, который у нас есть, следующим образом:

$ test = ‘Если бы у меня был Hi-Fi’;
$ упрощенный = str_replace (массив (», ‘-‘, ‘,’, ‘.’), массив (», », », »), $ test);
echo $ упрощено;

Дальнейшее упрощение

Код отформатирован таким образом, чтобы было легко увидеть, какой символ будет заменен на какой. В этом случае все заменяются пустой строкой — ». Следовательно, мы можем оставить первый аргумент в виде массива, а второй оставить простым »:

$ test = ‘Если бы у меня был Hi-Fi’;
$ упрощенный = str_replace (массив (», ‘-‘, ‘,’, ‘.’), », $ test);
echo $ упрощенный;

Ожидайте вторую часть, где мы покажем, какие проблемы могут возникнуть из этого кода и как мы можем его улучшить..

Понравилась статья? Поделиться с друзьями:
Что нужно знать пользователю?