подстановка в Perl пустых строк - PullRequest
0 голосов
/ 03 ноября 2010

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

EVASA           2144
IN ELABORAZIONE         16278

Мне нужен какой-нибудь Perl-скрипт, чтобы заменить все пробелы одним.

Вывод, который мне нужен:

EVASA 2144

Есть предложения?

Ответы [ 4 ]

7 голосов
/ 03 ноября 2010

Вы можете использовать очень простое регулярное выражение:

#!/usr/bin/perl
use strict;

my $line = 'EVASA           2144';

# This is the line that actually does the work
$line =~ s/\s+/ /g;

print $line, "\n";
4 голосов
/ 03 ноября 2010

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

2 голосов
/ 03 ноября 2010
$a = "hello    \t world";
$a =~ s/\s+/ /;
print $a;

, если в строке может быть несколько мест, где вы хотите произвести замену, используйте

$a = "hello    \t world    hi";
$a =~ s/\s+/ /g;
print $a;
0 голосов
/ 03 ноября 2010

Вы также можете использовать оператор tr с опцией s, это может сделать больше для вас (преобразование символов), возможно, быстрее, чем подход регулярного выражения

$a =~ tr/ \t/ /s;

Объяснение можно найтив справочной странице perlop:

perldoc perlop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...