удалить несколько новых строк из строки в Perl - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть такая строка:

city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232

И все строки в одной строке, и я хочу напечатать всю информацию, но в одной строке с разделителем.

iпробовал с этим кодом:

$val =~ s/\n/\ /;

но ничего.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Я думаю, что оператор транслитерации также справился бы с задачей:

$val =~ tr/\n/ /;

Транслитерация выполняет сопоставление символов «один-к-одному», что означает, что она не является многоцелевой, но хорошо работает для вещей.как это.Он также может делать классные вещи, такие как:

$val =~ tr/\n/ /s;

Где суффикс "s" означает взять любое количество символов новой строки и заменить их одним пробелом, если у вас есть пробелы - например, если«Адресная строка 2» является необязательной и может быть пустой.

0 голосов
/ 17 декабря 2018

Вы близки, вам нужен модификатор g

Посмотрите поведение этой программы, второй вывод покажет вам, что вы хотите.

Вы можете увидеть все модификаторы в perlre на perldoc.perl.org.

use strict;
use warnings;

my $val = <<'END';
city: London
Code: 123
address: 1, Napoleon
Phone: 123-123-1232
END

print $val;

$val =~ s/\n/ /g;

print $val;
...