Как взять подстроку заданной строки до первого появления указанного символа? - PullRequest
8 голосов
/ 24 ноября 2011

Вопрос если для perl.

Например, если у меня есть "hello.world" и указанный символ '.', тогда я хочу получить результат "hello".

Ответы [ 5 ]

25 голосов
/ 24 ноября 2011

См. perldoc -f index:

$x = "hello.world";
$y = substr($x, 0, index($x, '.'));
6 голосов
/ 24 ноября 2011

Использование substr:

my $string = "hello.world";
my $substring = substr($string, 0, index($string, "."));

Или с помощью регулярного выражения:

my ($substring2) = $string =~ /(.*)?\./;
1 голос
/ 24 ноября 2011

В духе TIMTOWTDI и введения новых функций: Использование неразрушающего параметра /r

my $partial = $string =~ s/\..*//sr;

Жадный конец .* отрубит все после первого периода, включая возможные символы новой строки (опция /s), но оставит исходную строку без изменений и избавит паренов от необходимости навязывать контекст списка (опция /r) ).

Цитата из perlop:

Если используется параметр / r (неразрушающий), запускается подстановка на копию строки и вместо возврата число замен, возвращает копию независимо от того, замена произошла. Исходная строка никогда не изменяется, когда / r используемый. Копия всегда будет простой строкой, даже если ввод объект или связанная переменная.

1 голос
/ 24 ноября 2011

Другая возможность:

my $string = 'hello.world';
print ((split /\./, $string)[0], "\n");
1 голос
/ 24 ноября 2011
use strict;
use warnings;

my $string = "hello.world";
my $dot = index($string, '.');
my $word = substr($string, 0, $dot);

print "$word\n";

дает вам hello

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