Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
$string =~ tr[A-Za-z][]s;
# если второй аргумент пуст, то в него подставляется
# первый аргумент
print $string;
Результат: This is some text
Пример: я скачал книгу, но в ней был такой недостаток: заглавные буквы были инвертированы строчными и наоборот, вот как я справился с этим:
$string = "tHIS iS bUGGY tEXT !!!";
$string =~ tr{A-Za-z}{a-zA-z};
print $string;
Получилось, что надо: This Is Buggy Text !!!
Пересчитываем количество букв в строке:
$string = "Some text";
$count = ($string =~ tr{A-Za-z}{});
print $count;
Результат: 8
Немного изменив выражение, можно подсчитать количество небуквенных символов:
$string = "Some _unique_text_ !!!";
$count = ($string =~ tr{A-Za-z}{}c);
print $count;
Ответ – 8, или вместо диапазона A-Za-z можно подставить 0-9 и тогда, в $count будет количество цифр в строке.
Оператор tr/.../.../ возвращает количество успешных замен, если не было сделано никаких замен – возвращает ноль. Таким образом можно подсчитать количество определенного символа в строке, например, подсчитываем количество буквы i в строке.
$string = "This is some text !";
$count = ($string =~ tr/i/i/);
print $count;
Результат: 2
Если у оператора tr/.../.../ нет модификаторов, тогда ее аргументы должны быть одинаковой длины, а если второй аргумент длиннее первого – он усекается до длины первого аргумента, например:
$string = "Some numbers: 7321";
$string =~ tr/7321/0-9/;
print $string;
Не зная того, что я сказал выше, вы, наверное, хотели заменить цифры 7321 на 0123456789, но результат вот какой: Some numbers: 0123
Т.е. команда tr/7321/0-9/ равна следующей: tr/7321/0123/.
Даже если цифры будут не по порядку, т.е.:
$string = "Some numbers: 7 then 3 then 2 and then 1";
$string =~ tr/7321/0-9/;
Результат будет таким: Some numbers: 0 then 1 then 2 and then 3
Или вот другой пример:
$string = "some text is here";
$string =~ tr/oet/ina/;
print $string;
Вот что получилось: simn anxa is hnrn
То есть к каждому символу в первом аргументе сопоставляется какой-то символ из второго аргумента.
А вот если первый аргумент длиннее второго, тогда последний символ второго аргумента повторяется до тех пор, пока не будет по длине как первый, например, tr/0-9/abc/ это равно tr/0123456789/abcccccccc/, вот так.
Здесь мы рассмотрим множество решений, собранных мной:
Поверяем на правильность адрес электронной почты: