Si tengo una cadena de Perl:¿Cómo puedo obtener un personaje en un índice dado en Perl?
$str = "Hello";
¿Cómo puedo obtener un carácter en un índice similar al dado charAt (índice)?
Si tengo una cadena de Perl:¿Cómo puedo obtener un personaje en un índice dado en Perl?
$str = "Hello";
¿Cómo puedo obtener un carácter en un índice similar al dado charAt (índice)?
Uso substr
con longitud 1 como en:
$nth = substr($string, n-1, 1);
También Lookup perlmonks para otras soluciones.
$char = substr($mainstring, $i , 1);
Es una forma de hacerlo, probablemente el más claro.
Si lo que faltó fue el valor numérico y que tenían la intención de hacer esto lotes:
unpack("W*","hello")
devuelve una matriz de valores de Char:
print join ",", unpack("W*","hello") ;
# 104,101,108,108,111
Para Unicode adecuada/Utf8 cosas que puede utilizar
use utf8;
unpack("U*","hello\0ƀ\n")
# 104,101,108,108,111,0,384,10
Corol Lary a las otras respuestas substr() es que usted puede usarlo para establecer valores en un índice también. Es compatible con esto como lvalue o con argumentos adicionales. También es muy similar al empalme, que es lo mismo, pero para matrices.
$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);
Alguien debe señalar que 'substr (x, y, z) = foo' es equivalente a' substr (x, y, z, foo) ', pero se recomienda la última notación ya que la primera suele confundir a los novatos. –
¡Acabas de hacerlo! Creo que también lo hice en la frase "básicamente". Supongo que un principiante que mire este ejemplo encendería la página de pod para substr y notará la magia LVALUE y usará la forma de cuatro argumentos ya que la forma LVALUE es extraña y aterradora, y así lo dice en el pod. Quizás tengo demasiada fe en los newbs? – jettero
O simplemente 'ord (substr ($ mainstring, $ i, 1))' –
La cosa es, por lo general cuando se desea que el valor de un carácter, desea que el valor de todos ellos, y un bucle a través ord (substr()) será menos eficiente, más difícil de leer y más difícil de depurar que la variante desempaquetar. –