none
AUTOMATAS RRS feed

  • Pregunta

  • Buena tarde , perdonen la molestia quisiera saber como hacer que me valide un comentario ingresandolo en un textbox, Si el comentario Empieza Con /*  y  termina con */ que me mande es valido,y si no tiene al empezar o terminar que me mande invalido, pero no debe aceptar  /*  en la parte intermedia, ejemplo; /* hola /* mundo */.  Espero su ayuda ,gracias.
    jueves, 3 de septiembre de 2020 21:06

Todas las respuestas

  • private void button1_Click(object sender, EventArgs e)
            {
    
                if (textBox1.Text.Substring(0, 2) == "/*" && textBox1.Text.Substring(textBox1.Text.Length - 2, 2) == "*/")
                {
                    MessageBox.Show("Correcto");
                }
                else
                {
                    MessageBox.Show("Incorrecto");
                }
            }


    Fijese que cuento con el siguiente codigo lo que no logro hacer es que cuando ingrese una cadena por ejemplo /*Hola */ mundo*/ no me la acepte ya que lleva */ en la parte intermedia
    jueves, 3 de septiembre de 2020 21:36
  • esta bien gracias
    jueves, 3 de septiembre de 2020 21:57
  • Hola RonyCarcamo,

    Aquí tienes la respuesta:

    //esta variable string es el equivalente de tomar el string de tu textbox (textBox1.Text), acá no puedo poner un textbox 
    		//.ToLower() es para pasarlo todo a minúscula  para tenerlo todo en minúscula y facilitar comparaciones de caracteres
    		//.Trim() le quita los espacios innecesarios al string
    		string str1 = "/**/".ToLower().Trim();
    		//aquí tomamos cada letra de tu string ya procesado y lo guardamos en un arreglo de caracteres, recuerda que el primer índice es 0
    		char[] arreglo = str1.ToCharArray();  
    
    			//aquí evaluamos que existan al menos 4 caracteres en la respuesta, o sea 4 elementos en el arreglo, sabemos que es el mínimo posible en este caso
    			// si no lo evaluamos y hay menos, va a existir un error en el if al hacer referencia a un índice que no existe
    			if (arreglo.Length < 4)
                {
                    Console.WriteLine("FALSE");
                }else{
    				//aquí comparamos que el caracter en el índice 0 sea /, en el segundo, o sea, el espacio número 1 tiene que haber un *
    				//luego usamos la propiedad del arreglo que nos dice la cantidad de elementos (.Length) menos uno y menos 2 para revisar los últimos dos espacios del arreglo.
    				if (arreglo[0].Equals('/') && arreglo[1].Equals('*') && arreglo[arreglo.Length-2].Equals('*')  && arreglo[arreglo.Length-1].Equals('/'))
                	{
                   		Console.WriteLine("TRUE");
                	}else{
                   		Console.WriteLine("FALSE");
                	}
    			}

    La respuesta la probé acá, puedes entrar a esa página si gustas, pegar el código y probarlo haciendo cambios al string:

    Por favor no olvides marcar una respuesta si resolviste tu consulta. Espero que te sea de ayuda. Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    jueves, 3 de septiembre de 2020 23:21
    Moderador
  • Hola. La clase string posee unos métodos llamados

    Startswith y EndsWith

    Por lo que sería más sencillo el código

    private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.StartsWith("/*") &&

    textBox1.Text.EndsWith("*/") &&

    textBox1.Text.Split("*/").Length==1) {

    MessageBox.Show("Correcto");

    } else { MessageBox.Show("Incorrecto"); } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos



    viernes, 4 de septiembre de 2020 7:44
    Moderador
  • Hola Rony

    Te paso el código que comprueba que el string comience con /* y que termine con */, y que el substring que queda entre esos pares de caracteres no contenga /* ni */.

    if (textBox1.Text.StartsWith("/*") && textBox1.Text.EndsWith("*/"))
    {
        string enElMedio = textBox1.Text.SubString(2, textBox1.Text.Length - (2 + 2));
        if (enElMedio.IndexOf("/*") == -1 && enElMedio.IndexOf("*/") == -1)
            MessageBox.Show("Correcto");
        else
            MessageBox.Show("Incorrecto");
    }
    else
    {
        MessageBox.Show("Incorrecto");
    }

    El método IndexOf(string str) devuelve el 1er índice de str en el string que lo invoca, o -1 si no existe. 

    El método SubString(int desde, int longitud) devuelve un string que comienza en el índice 'desde' y tiene 'longitud' caracteres, en este caso, comienza en 2 y la longitud es la misma que el Text - (2 del comienzo + 2 del final).

    Faltaría comprobar que el Text no sea algo como "/*/", y esas cosas, que son más fáciles pero creo que dan para pensar un poco.


    Saludos

    Pablo

    sábado, 19 de septiembre de 2020 22:06
  • Hola RonyCarcamo,

    ¿Alguna novedad sobre tu pregunta? ¿Han sido útiles las respuestas proporcionadas? Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice "Marcar como Respuesta").

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    martes, 22 de septiembre de 2020 17:34
    Moderador