Foros del Web » Programando para Internet » PHP »

Cambiar letras en cadena de texto

Estas en el tema de Cambiar letras en cadena de texto en el foro de PHP en Foros del Web. ¿Cómo puedo cambiar las dos últimas letras de una cadena de texto por una letra? Por ejemplo si tengo $a="holaa" cambiarla por "holb"...
  #1 (permalink)  
Antiguo 06/06/2003, 08:08
 
Fecha de Ingreso: enero-2002
Ubicación: Graná
Mensajes: 646
Antigüedad: 15 años, 11 meses
Puntos: 0
Cambiar letras en cadena de texto

¿Cómo puedo cambiar las dos últimas letras de una cadena de texto por una letra? Por ejemplo si tengo $a="holaa" cambiarla por "holb"
  #2 (permalink)  
Antiguo 06/06/2003, 08:16
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
Código PHP:
$cad "holaa";
$longitud_cad strlen($cad);
$nueva_cad substr_replace($cad,"b",$longitud_cad-2,2);
echo 
$nueva_cad
  #3 (permalink)  
Antiguo 06/06/2003, 11:08
 
Fecha de Ingreso: enero-2002
Ubicación: Graná
Mensajes: 646
Antigüedad: 15 años, 11 meses
Puntos: 0
muchas gracias, pero y como puedo contar los caracteres que tengo repetidos al final de una cadena. Por ejemplo:

holaaaaaaaaa

¿como sé que hay 9 as al final?
  #4 (permalink)  
Antiguo 06/06/2003, 12:34
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
una pregunta siempre tienes que cambiar aquella que se repitan al final?
  #5 (permalink)  
Antiguo 06/06/2003, 13:27
 
Fecha de Ingreso: enero-2002
Ubicación: Graná
Mensajes: 646
Antigüedad: 15 años, 11 meses
Puntos: 0
si, tienen que estar al final del fichero
  #6 (permalink)  
Antiguo 10/06/2003, 13:44
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
Perdon por la tardanza

mira aviana seria algo asi:


Código PHP:
<?php

     $cadena 
"holaaaaaaaa"//cadena a sustituir
     
for ($i=0;$i<strlen($cadena); $i++) {  //aqui creamos un arreglo con 
          
$inicio=$i;                       //cada elemento de la cadena. 
          
$fin=1;                      
          
$arreglo[$i]=substr($cadena,$inicio,$fin); 
         }
    
     
$cont=0//contador para ver cuantos elementos vamos a sustituir
     
$pos =0;   
     
$indice2=0;   
     
$tamaño count($arreglo)-1//obtenemos la longitud del arreglo $arreglo

     
for($j=0;$j<$tamaño;$j++){             //recorremos el arreglo para que 
        
if ($arreglo[$j]==$arreglo[$j+1]){  //checamos las veces que se repite una letra.
            
$cont++;
            
$pos $j+1;                    //guardamos la posicion en que se encontro
            #echo $pos."<br>";              //la primera repeticion y la asignamos a un
            
$arreglo2[$indice2]=$pos;       //segundo arreglo que tendra la posion que para
            
$indice2++;                     //nustro caso solo utilizaremos lo que guarde en 
         
}                                  //la primera posicion 
     

     
$cadenafinal substr_replace($cadena,"b",$arreglo2[0],$cont);
     
//aqui reemplazamos la cadena repetida la cadena original holaaaaaa.. por lo que deseamos
     //reemplazarla "b" a partir de donde hace el reemplazo y hasta donde.
     
      
echo $cadenafinal."<br>";     //mostramos la cadena ya reemplazada.
      
     
?>
checalo .

espero te sirva y mil disculpas por la tardanza.

si te sirvio espero tu respuesta.
  #7 (permalink)  
Antiguo 10/06/2003, 15:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

No dudo que funcione, pero quizas hay otro algoritmo mas facil simplemente mirando el problema desde otro enfoque. Sabemos el tamaño de la cadena; sabemos cual es el ultimo caracter; recorremos la cadena desde el final hasta el comienzo hasta que encontremos un caracter que no sea igual al ultimo caracter, contando los que son iguales; sabiendo cuantos son iguales, hacemos la sustitucion. Y asi de cabeza me sale este codigo:
Código PHP:
$texto="holaaaaaaaaaaaaaaaaaaaaa";
$longitud_cadena=strlen($texto);
$ultimo_caracter=$texto{$longitud_cadena 1}; // -1 porque el primer caracter es el indice 0
$caracteres_repetidos=0;
for (
$i=$longitud_cadena 1;$i>=0;$i--) {
  if (
$texto{$i}!=$ultimo_caracter) break; // salimos del bucle
  
$caracteres_repetidos++;  // sumamos 1 al numero de caracteres repetidos
}  // fin for
$texto_final=substr_replace($texto,"b",$longitud_cadena-$caracteres_repetidos,$caracteres_repetidos);
echo 
$texto_final
He hecho un par de pruebas y parece que funciona.

Simplemente otra opcion de algoritmo.

Saludos.

PD: Esto es lo grande de la programacion. Pregunta a 10 programadores por un programa, y obtendras 21 codigos totalmente validos y que funcionan.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:15.