замена новой строки в строке с помощью регулярных выражений - PullRequest
4 голосов
/ 14 июля 2011

Я использую следующее регулярное выражение для удаления новых строк из строки:

$description =~ s/\r//;
$description =~ s/\n//;

но потом я получаю за:

$description =~ m/\n/

Кажется, регулярное выражение не заменило все символы новой строки в строке, какая-нибудь помощь в этом?

Ответы [ 2 ]

9 голосов
/ 14 июля 2011

Если вы пытаетесь удалить отдельные символы, используйте tr вместо s///.

$description =~ tr/\r\n//d;

Это удалит все вхождения \r или \n независимо от их соответствующих позиций в строке.

4 голосов
/ 14 июля 2011

Ваши замены не являются глобальными заменами - они заменяют только первый экземпляр шаблона в строке.Чтобы сделать глобальную замену, добавьте ag после последней косой черты, например:

$description =~ s/\r//g;
$description =~ s/\n//g;

Вы также можете объединить две замены в одну подстановку, используя набор символов:

$description =~ s/[\n\r]//g;
...