Se ho una stringa Perl:Come posso ottenere un carattere in un dato indice in Perl?
$str = "Hello";
come posso ottenere un personaggio in un determinato indice simile a charAt (indice)?
Se ho una stringa Perl:Come posso ottenere un carattere in un dato indice in Perl?
$str = "Hello";
come posso ottenere un personaggio in un determinato indice simile a charAt (indice)?
Uso substr
di lunghezza 1 come in:
$nth = substr($string, n-1, 1);
Lookup anche perlmonks altre soluzioni.
$char = substr($mainstring, $i , 1);
È un modo per farlo, probabilmente il più chiaro.
Se mancasse era il valore numerico e avevate intenzione di fare questo lotti:
unpack("W*","hello")
restituisce una matrice di valori Char:
print join ",", unpack("W*","hello") ;
# 104,101,108,108,111
Per una corretta Unicode/Utf8 roba che potresti voler utilizzare
use utf8;
unpack("U*","hello\0ƀ\n")
# 104,101,108,108,111,0,384,10
Corol lary alle altre risposte di substr() è che è possibile utilizzarlo per impostare anche i valori in un indice. Supporta questo come lvalue o con argomenti extra. È anche molto simile alla giunzione, che è la stessa cosa, ma per gli array.
$string = "hello";
substr($string, 2, 2) = "this works?";
substr($string, 2, 2, "same thing basically");
@a = qw(s t r i n g s a n d t h i n g s);
@cut_out = splice(@a, 2, 2);
@cut_out = splice(@a, 2, 2, @replacement);
Qualcuno dovrebbe indicare il 'substr (x, y, z) = pippo' è equivalente a' substr (x, y, z, pippo) ', ma la seconda notazione è raccomandata in quanto la prima confonde spesso i neofiti. –
Hai appena fatto! Penso di aver fatto anche nella frase "la stessa cosa in sostanza". Suppongo che una newb che guardi questo esempio possa aprire la pagina pod per substr e notare la magia LVALUE e usare la forma a quattro argomenti poiché la forma LVALUE è strana e spaventosa - e lo dice sul pod. Forse ho troppa fiducia nei novizi? – jettero
O semplicemente 'ord (substr ($ mainstring, $ i, 1))' –
Il fatto è che, di solito quando si desidera che il valore di un carattere, si desidera che il valore di tutti loro, e scorrendo ord (substr()) sarà sia meno efficiente, sia più difficile da leggere e più difficile da eseguire il debug rispetto alla variante di decompressione. –