none
Contar el numero de apariciones de un carácter en una cadena de texto VB.NET RRS feed

Respuestas

  • Lo más directo es simplemente recorrer los caracteres usando un bucle e incrementando un contador por cada coincidencia:

    string cadena = "abcdebcab";
    char aBuscar = 'b';
    int n=0;
    foreach (char c in cadena)
    {
        if (c==aBuscar) ++n;
    }
    //Ahora n es el número de coincidencias

    Si quieres algo más sofisticado, puedes usar LINQ o una Expresión Regular para contar las coincidencias con una sola sentencia. Por ejemplo, con LINQ:

    int n = (from c in cadena where c==aBuscar select c).Count();

    Editado: Me acabo de dar cuenta de que en el enunciado de la pregunta se pide VB.NET. Traduzco el código inicial a dicho lenguaje:

    Dim cadena As String = "abcdebcab"
    Dim aBuscar As Char = "b"C
    Dim n As Integer = 0
    For Each c As Char In cadena
        If c = aBuscar Then
            n += 1
        End If
    Next
    'Ahora n es el número de coincidencias

    Y también la consulta LINQ:

    Dim n As Integer = (From c In cadena Where c = aBuscar Select c).Count()


    lunes, 24 de febrero de 2014 6:26

Todas las respuestas

  • Lo más directo es simplemente recorrer los caracteres usando un bucle e incrementando un contador por cada coincidencia:

    string cadena = "abcdebcab";
    char aBuscar = 'b';
    int n=0;
    foreach (char c in cadena)
    {
        if (c==aBuscar) ++n;
    }
    //Ahora n es el número de coincidencias

    Si quieres algo más sofisticado, puedes usar LINQ o una Expresión Regular para contar las coincidencias con una sola sentencia. Por ejemplo, con LINQ:

    int n = (from c in cadena where c==aBuscar select c).Count();

    Editado: Me acabo de dar cuenta de que en el enunciado de la pregunta se pide VB.NET. Traduzco el código inicial a dicho lenguaje:

    Dim cadena As String = "abcdebcab"
    Dim aBuscar As Char = "b"C
    Dim n As Integer = 0
    For Each c As Char In cadena
        If c = aBuscar Then
            n += 1
        End If
    Next
    'Ahora n es el número de coincidencias

    Y también la consulta LINQ:

    Dim n As Integer = (From c In cadena Where c = aBuscar Select c).Count()


    lunes, 24 de febrero de 2014 6:26
  • Hola:

    Existen muchas formas de hacerlo depende de lo que quieras una puede ser mejor que otra (rápida de ejecución, de escribirla), a mi me gusta esta :-)

    MsgBox Texto.Length - Texto.Replace(cCaracterAContar,"").Length

    Saludos

    lunes, 24 de febrero de 2014 8:43
  • Y otra, que no es rápida en ejecución pero sí es breve de escribir:

    Texto.Split(cCaracterAContar).Length-1

    lunes, 24 de febrero de 2014 9:15