Pregunta

¿Hay alguna función como int() que puede convertir una cadena a flotar valor? Actualmente estoy usando el siguiente código:

$input=int(substr($line,1,index($line,",")-1));

Necesito convertir la cadena devuelta por substr flotar.

¿Fue útil?

Solución

Sólo usarlo. En Perl, una cadena que parece un número es un número.

Ahora, si usted quiere estar seguro de que la cosa es un número antes usarla luego hay un método de utilidad en Scalar::Util que lo hace:

use Scalar::Util qw/looks_like_number/;

$input=substr($line,1,index($line,",")-1);

if (looks_like_number($input)) {
    $input += 1; # use it as a number!
}

En base a la entrada de la muestra que dejó en los comentarios, un método más robusto de extraer el número es:

$line =~ /([^\[\],]+)/; # <-- match anything not square brackets or commas
$input = $1;            # <-- extract match

Otros consejos

No sé lo que sus datos se parece, pero te das cuenta que el tercer argumento a substr es una longitud, una posición no, ¿verdad? Además, la primera posición es 0. Sospecho que no está recibiendo los datos que piensa que está recibiendo, y sobre todo accidentalmente funciona porque está comenzando en el principio de la cadena y sólo fuera por una.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top