Sí puedes usar la función
substr.
Tienes que hacer un bucle por toda la cadena de caracteres, encontrar los blancos, y quitarlos.
Using perl Syntax Highlighting
print ": ingrese una oración\n";
$oracion = <STDIN>;
chomp $oracion;
for ($i=0; $i<length($oracion); $i++) {
if ( substr($oracion,$i,1) eq ' ' ) {
substr($c,$i,1) = "";
redo;
}
}
print lenght($oracion);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Aunque, desde luego, lo más sencillo es simplemente, contarlos:
Using perl Syntax Highlighting
print ": ingrese una oración\n";
$oracion = <STDIN>;
chomp $oracion;
$longitud=0;
for ($i=0; $i<length($oracion); $i++) {
if ( substr($oracion,$i,1) ne ' ' ) {
$longitud = $longitud + 1;
}
}
print $longitud;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Otra forma sería utilizar las funciones de traducción, como la
tr///:
Using perl Syntax Highlighting
print ": ingrese una oración\n";
$oracion = <STDIN>;
chomp $oracion;
$oracion =~ tr/ //d;
print lenght($oracion);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y, finalmente, usar la función de sustitución,
s///:
Using perl Syntax Highlighting
print ": ingrese una oración\n";
$oracion = <STDIN>;
chomp $oracion;
$oracion =~ s/ //g;
print lenght($oracion);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Con estas últimas opciones quitarías los blancos, pero si sólo quieres contarlos, te vale con la segunda solución, o, un truco como este: traducir todos los blancos por blancos y saber cuántas veces lo hemos hecho. A la longitud total de la cadena, le restamos ese valor, y tendremos la longitud menos lo que ocupan los blancos:
Using perl Syntax Highlighting
print ": ingrese una oración\n";
$oracion = <STDIN>;
chomp $oracion;
$blancos = $oracion =~ tr/ / /;
print lenght($oracion) - $blancos;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Última edición por explorer39 el 2005-11-27 12:58 @582, editado 3 veces en total