Pytanie dotyczące perl.Jak wziąć podciąg łańcucha danego łańcucha do pierwszego pojawienia się określonego znaku?
Na przykład, jeśli mam "hello.world"
, a podany znak to '.'
, to pożądany wynik to "hello"
.
Pytanie dotyczące perl.Jak wziąć podciąg łańcucha danego łańcucha do pierwszego pojawienia się określonego znaku?
Na przykład, jeśli mam "hello.world"
, a podany znak to '.'
, to pożądany wynik to "hello"
.
Zobacz perldoc -f index
:
$x = "hello.world";
$y = substr($x, 0, index($x, '.'));
Korzystanie substr
:
my $string = "hello.world";
my $substring = substr($string, 0, index($string, "."));
lub za pomocą regexp:
my ($substring2) = $string =~ /(.*)?\./;
use strict;
use warnings;
my $string = "hello.world";
my $dot = index($string, '.');
my $word = substr($string, 0, $dot);
print "$word\n";
daje hello
dla WORLD; my $ world = substr ($ string, $ dot, length ($ string)); – Hariboo
Inna możliwość:
my $string = 'hello.world';
print ((split /\./, $string)[0], "\n");
W duchu TIMTOWTDI i wprowadzając nowe funkcje: Używanie non-destructive option/r
my $partial = $string =~ s/\..*//sr;
chciwy .*
koniec będzie odrąbać wszystko po pierwszym okresie, w tym możliwe znaki nowego wiersza (opcja /s
), ale zachowaj oryginalny ciąg znaków w stanie nienaruszonym i usuń konieczność wstawiania w celu narzucenia kontekstu listy (opcja /r
).
żądanie z perlop:
Jeśli opcja/R (nieinwazyjne) służy wówczas uruchamia podstawienie na kopię łańcucha i zamiast zawracania liczbę podstawień, zwraca kopię, niezależnie od tego, czy nastąpiło podstawienie, czy też nie. Oryginalny ciąg nigdy nie jest zmieniany, gdy używana jest/r jest . Kopia zawsze będzie zwykłym ciągiem znaków, nawet jeśli dane wejściowe to obiekt lub zmienna powiązana.
Nie miałem na myśli perldoc jako "RTFM", ale jako "Więcej informacji, patrz: ____". :) –