2010-11-03 11 views
0

у меня есть это два вида строк:Perl пустой замена в строке

EVASA   2144 
IN ELABORAZIONE   16278 

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

Выход мне нужно:

EVASA 2144 

Любое предложение?

ответ

7

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

#!/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"; 
+1

-w или использовать предупреждения! – ysth

2
$a = "hello \t world"; 
$a =~ s/\s+/ /; 
print $a; 

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

$a = "hello \t world hi"; 
$a =~ s/\s+/ /g; 
print $a; 
4

Мое предложение что вы потратите некоторое время на чтение Regular Expression tutorial, который распространяется со всеми современными версиями Perl.

+1

Я согласен с тобой, но когда-нибудь я люблю человеческую интерпретацию решения. Это заставляет меня понимать больше, чем читать книгу! Я уже читаю книгу, которую вы мне предложили! Благодаря! – Kerby82

0

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

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

Объяснение можно найти в perlop страницы руководства:

perldoc perlop