у меня есть это два вида строк:Perl пустой замена в строке
EVASA 2144
IN ELABORAZIONE 16278
Мне нужно некоторое PERL скрипт, чтобы заменить все пробелы с только один.
Выход мне нужно:
EVASA 2144
Любое предложение?
у меня есть это два вида строк:Perl пустой замена в строке
EVASA 2144
IN ELABORAZIONE 16278
Мне нужно некоторое PERL скрипт, чтобы заменить все пробелы с только один.
Выход мне нужно:
EVASA 2144
Любое предложение?
Вы можете использовать очень простое регулярное выражение:
#!/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";
$a = "hello \t world";
$a =~ s/\s+/ /;
print $a;
, если вы можете иметь несколько мест в строке, где требуется замена иметь место, используйте
$a = "hello \t world hi";
$a =~ s/\s+/ /g;
print $a;
Мое предложение что вы потратите некоторое время на чтение Regular Expression tutorial, который распространяется со всеми современными версиями Perl.
Я согласен с тобой, но когда-нибудь я люблю человеческую интерпретацию решения. Это заставляет меня понимать больше, чем читать книгу! Я уже читаю книгу, которую вы мне предложили! Благодаря! – Kerby82
Вы также можете использовать оператор tr
с s
Option, это может сделать больше вещей для вас (трансформирующие символов), вероятно, быстрее, чем подход регулярных выражений
$a =~ tr/ \t/ /s;
Объяснение можно найти в perlop
страницы руководства:
perldoc perlop
-w или использовать предупреждения! – ysth