Как удалить пробел в строке Perl?

13
задан Community 23 May 2017 в 12:31
поделиться

8 ответов

$myString =~ s/^\s*(.*?)\s*$/$1/;

Это обрезает пробелы с обеих сторон.

справа:

$myString =~ s/\s*$//;
25
ответ дан 1 December 2019 в 17:17
поделиться

Если ваше белое пространство - это просто пробелы, то следующий код удалит все пробелы:

$mystring =~ tr/ //ds;
13
ответ дан 1 December 2019 в 17:17
поделиться
sub trim($)
{
    my $string = shift;
    $string =~ s/^\s+//;
    $string =~ s/\s+$//;
    return $string;
}


print trim($myString)
11
ответ дан 1 December 2019 в 17:17
поделиться

Попробуйте:

# Delete leading/trailing whitespace.
$string =~ s/^\s+|\s+$//g;
8
ответ дан 1 December 2019 в 17:17
поделиться
sub trim
{
    my $str = $_[0];
    $str=~s/^\s+|\s+$//g;
    return $str;
}

print trim(" 4 ");
2
ответ дан 1 December 2019 в 17:17
поделиться

Просто просматривая вашу программу, я обнаружил 3 места, которые можно улучшить или исправить.

Прошу прощения, если мой код плохо отформатирован. : - (

В вашей функции parse_block (...) есть 3 элемента, требующие внимания.

@attribs = $attribs =~ /\s*(\w+\s+=\s+\w+\s+|\w+\s+=\s+".*?"|\w+\s+=\s+<.*?>)\s*/g;

Чтобы убрать пробелы после vid => '6', просто не включайте \ s + в конец вашего первого подрегулярного выражения.

Запишите его как:

@attribs = $attribs =~ /\s*(\w+\s+=\s+\w+|\w+\s+=\s+".*?"|\w+\s+=\s+<.*?>)\s*/g;  

$value = [ parse_type_value_specifier( $start_tail ) ];  

Вместо этого вы хотите следующее:

$value = [ parse_type_value_specifier( $value ) ]; 

(Обратите внимание, что параметром функции должно быть $ value, а не $ start_tail.) Вы, вероятно, не заметили this.

В цикле для @attributes 'else' в условии if / else срабатывает, когда 'value' имеет простое значение (нет элементов "" или <...> в 'value').

Обновление: параметр в

parse_type_value_specifier(...)
изменен на $ value. Он был (неправильно) указан как $ attrib.
1
ответ дан 1 December 2019 в 17:17
поделиться

Еще одно возможное альтернативное решение - Text :: Trim из CPAN, которое «удаляет начальные и / или конечные пробелы из строк». Он имеет функцию подстройки , которая может удовлетворить ваши потребности.

5
ответ дан 1 December 2019 в 17:17
поделиться

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

- Рутина

Sub unspace { мой @stringer = @_? @_: $ ; $ = join ('', разделение ('')) для @Stringer; Вернуть желание? @Striinger: «@Stringer»; }

- использование

$ MySpacedString = 'String с двойными пробелами вкладками и другими областями пробелов. '; $ Mycleanstring = unspace ($ myspacedstring);

2
ответ дан 1 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: