Foros del Web » Programando para Internet » ASPX (.net) »

Replace() reemplaza todo la cadena!!

Estas en el tema de Replace() reemplaza todo la cadena!! en el foro de ASPX (.net) en Foros del Web. que tal srs, bueno tengo un menu en la cual se expande mucho por lo tanto quiero que al encontrar el segundo espacio le de ...
  #1 (permalink)  
Antiguo 30/09/2009, 12:59
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Replace() reemplaza todo la cadena!!

que tal srs,
bueno tengo un menu en la cual se expande mucho por lo tanto quiero que al encontrar el segundo espacio le de un <br /> y siga abajo, el codigo lo desarrolle pero al tratar de reemplazar el caracter vacio con el Replace lo que hace es reemplazar toda la cadena por el, espero que me puedan ayudar. Saludos

Código:
for (i = 0; i < filter.Text.Length; i++){
if (filter.Text[i] == ' ')
      FlagW++;
if (FlagW == 2) {
       filter.Text = filter.Text[i].ToString().Replace(" ","<br />");
       break;
}
}
linkButton.Text = "» " + filter.Text + tempw;
  #2 (permalink)  
Antiguo 30/09/2009, 13:17
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Replace() reemplaza todo la cadena!!

filter.Text = filter.Text[i].ToString().Replace(" ","<br />");

aqui esta tu problema

tu reasignas el espacio por el br pero lo asignas eso a toda la cadena

deberia ser algo como

filter.Text[i]=filter.Text[i].ToString().Replace(" ","<br />");

pero considera q Text[i] es un char no un string asi que tendras que hacer alguna conversion previa a string y reasignar u basarte en el indice para jugar con ambas cadenas la que esta antes del 2do espacio y la que esta despues de.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 30/09/2009, 13:32
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Replace() reemplaza todo la cadena!!

Peterpay maestro........gracias por responder

como ves sigo con los problemas con los arrays mira les hize la siguiente modificaciones pero aun haci no funka


Código:
 int FlagW = 0;
 int i = 0;
string tempw;  //declaro como string
tempw = filter.Text; //copio en un auxiliar
                    

                    for (i = 0; i < tempw.Length; i++)
                        {
                            if (tempw[i] == ' ')
                                FlagW++;
                            if (FlagW == 2)
                            {
                                filter.Text[i] = tempw[i].ToString().Replace(" ", "<br />");
                                break;
                            }
                        }
                        linkButton.Text = "» " + filter.Text + tempw
pero aun asi salen 2 errores

Error 1 Property or indexer 'string.this[int]' cannot be assigned to -- it is read only
Error 2 Cannot implicitly convert type 'string' to 'char'

lei por ahi que si lo pasaba como stringbuilder lo podia editar pero cuando lo probe salio el mismo error. haber si me echas otra manito. Gracias.
  #4 (permalink)  
Antiguo 30/09/2009, 14:15
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Replace() reemplaza todo la cadena!!

yo haria algo como

char []separador=new char {' '};

string []datos=filter.Text.Split(separador);

string cadenaAntesDelSegundoEspacio=datos[0]+" "+datos[1];
string cadenaDespuesDelSegundoEspacio="<br />"+string.Join(" ", datos, 2, datos.Lenght -2);

string final=cadenaAntesDelSegundoEspacio+cadenaDespuesDe lSegundoEspacio;

claro esto no es lo mas elegante posible pero funciona y ojo, que debes agregar validaciones para el caso en que el texto no tenga mas de 1 espacio.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 01/10/2009, 02:25
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Replace() reemplaza todo la cadena!!

hola gracias por tu respuesta....

pero ya lo resolvi de esta forma

Código:
                    string[] final = filter.Text.Split(new Char[] { ' ' });
                    foreach (string s in final)
                    {
                        if (s.Trim() != " " && i != 2)
                        {
                            linkButton.Text += s + " ";
                        }
                        if (s.Trim() != " " && i == 2)
                        {
                            linkButton.Text += s + "<br />";
                        }
                        i++;
                    }
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:29.