/ / Czym zajmuje się substrer Perla? - perl, string, substr

Czym zajmuje się substrer Perla? - perl, string, substr

Moja zmienna $var ma postać "abc.de". Co dokładnie robi ten substr w tym oświadczeniu:

$convar = substr($var,0,index(".",$var));

Odpowiedzi:

5 dla odpowiedzi № 1

index() wyszukuje jeden ciąg w innym i zwraca indeks lub pozycję tego ciągu.

substr() zwróci podciąg łańcucha w 2 pozycjach (od 0).

Patrząc na powyższe, podejrzewam, że metoda indeksu jest używana niepoprawnie (ponieważ jej definicja jest indeks STR, SUBSTR) i tak powinno być

index($var, ".")

znaleźć "." wewnątrz "abc.de" i określić podciąg "abc.de"


2 dla odpowiedzi nr 2

Podane tu użycie substr jest:

substr EXPR,OFFSET,LENGTH

Ponieważ przesunięcie wynosi 0, operacja zwraca ciąg znaków do góry, ale nie obejmuje pierwszego "." pozycja (zwrócona przez indeks (".", $ var)) do $ convar.

Spójrz na substr i indeks funkcje w perldoc, aby wyjaśnić sprawy dalej.


0 dla odpowiedzi № 3

Perl substr funkcja ma format:

substr [string], [offset], [length]

która zwraca ciąg z przesunięcia indeksu do przesunięcia indeksu + długość

indeks ma format:

index [str], [substr]

która zwraca indeks pierwszego wystąpienia substr w str.

tak substr ("abc.de", 0, index (".", $ var)); zwróci podłańcuch rozpoczynający się od indeksu 0 (tj. "a") aż do liczby znaków do pierwszego wystąpienia ciągu "."

Więc $ convar będzie miało "abc" w podanym przykładzie

edytuj: cholera, ludzie są zbyt szybcy: P edit2: i Brian ma rację co do tego, że indeks jest używany niepoprawnie


0 dla odpowiedzi nr 4

Dlaczego nie uruchomić i dowiedzieć się?

#! / usr / bin / perl my $ var = $ ARGV [0]; mój $ index = indeks (".", $ var);  print "index to $ index.n";  my $ convar = substr ($ var, 0, $ index); print "convar to $ convar.n";

Uruchom to na kilka słów i zobacz, co się stanie.

Możesz również wpisać:

Indeks perldoc -f perldoc -f substr

0 dla odpowiedzi № 5

Bajecznie można zapisywać dane w podłańcuchu przy użyciu substr jako lewej strony zadania:

$ perl -e "$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a"
perl kicks ass!

Nie musisz nawet trzymać się tej samej długości - sznur rozszerzy się, aby dopasować.

Technicznie jest to znane jako użycie substr jako l-wartości.