none
Eliminar ultimo elemento de un string array

    Pregunta

  • Buen dia, me encuentro tratando de solucionar lo siguiente:

    tengo el siguiente array de strings

    Dim MIARRAYESPERA(100) As String

    Quiero que al presionar un botón se elimine el ultimo elemento de este array, el problema es que no se que método utilizar para poder hacerlo, espero que me puedan ayudar, de antemano muchas gracias


    Alvaro Fabian M:.

    viernes, 24 de marzo de 2017 23:28

Respuestas

  • Hola Alvaro Fabian M,

    ¿Por qué no usas listas (List(Of String)) ?

    'Eliminar el último
    MIARRAYESPERA = MIARRAYESPERA.Take(MIARRAYESPERA.Length - 1).ToArray()

    Con listas utilizarías RemoveAt(), y si quieres obtener un arreglo usarías ToArray().

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 24 de marzo de 2017 23:48
  • "Sergio Parra" escribió:

    > Si es "redimensionar" el código sería
    >
    > ReDim Preserve MIARRAYESPERA(MIARRAYESPERA.Length - 1)

    Hola, Sergio:

    Me vas a disculpar mi intromisión, pero quiero cerrar la pregunta y no estoy muy de acuerdo con tu solución.

    Si hablamos de redimensionar una matriz para eliminar de la misma el último elemento que actualmente tenga establecido, entiendo que en lugar de quitarle una unidad a la longitud de la matriz tendríamos que quitarle dos unidades, ya que los índices están en base cero.

    Para que lo veamos más fácil, imaginemos que tenemos declarada la siguiente matriz alfanumérica con tres elementos:

        Dim MIARRAYESPERA() As String = {"1", "2", "3"}

    Si redimensionamos la matriz eliminando un elemento del tamaño de su longitud, lo que estamos haciendo es dejar la matriz con el mismo número de elementos que tiene:

        MIARRAYESPERA.Length - 1 => 3 - 1 = 2 => 3 elementos (0, 1, 2)

    Como los índices están en base cero, el primer elemento será el 0, el segundo el 1 y el tercero el 2, por tanto, la matriz continuará teniendo 3 elementos.

    Para redimensionar la matriz eliminando su último elemento, a la longitud de la matriz actual tenemos que quitarle dos unidades:

        ReDim Preserve MIARRAYESPERA(MIARRAYESPERA.Length - 2)

       

        MIARRAYESPERA.Length - 2 => 3 - 2 = 1 => 2 elementos (0, 1)

    Si estuviéramos utilizando el lenguaje C# otro gallo cantaría, pero se supone que el usuario Alvaro Fabian M está utilizando Visual Basic, por tanto, al número total de elementos (length - 1) tenemos que eliminarle otra unidad más para no tener en cuenta el último elemento de la misma: length - 2.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    miércoles, 29 de marzo de 2017 15:38
    Moderador

Todas las respuestas

  • Hola Alvaro Fabian M,

    ¿Por qué no usas listas (List(Of String)) ?

    'Eliminar el último
    MIARRAYESPERA = MIARRAYESPERA.Take(MIARRAYESPERA.Length - 1).ToArray()

    Con listas utilizarías RemoveAt(), y si quieres obtener un arreglo usarías ToArray().

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 24 de marzo de 2017 23:48
  • Hola, cuando dices "eliminar" el último elemento del array te refieres a eliminar el elemento(99) o "redimensionar" el array para que contenga un elemento menos de capacidad? 


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

    sábado, 25 de marzo de 2017 0:16
  • Si es "redimensionar" el código sería

    ReDim Preserve MIARRAYESPERA(MIARRAYESPERA.Length - 1)

    Si es borrar el contenido del último elemento el código sería

    MIARRAYESPERA(MIARRAYESPERA.GetUpperBound(0)) = Nothing 


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



    sábado, 25 de marzo de 2017 0:18
  • "Sergio Parra" escribió:

    > Si es "redimensionar" el código sería
    >
    > ReDim Preserve MIARRAYESPERA(MIARRAYESPERA.Length - 1)

    Hola, Sergio:

    Me vas a disculpar mi intromisión, pero quiero cerrar la pregunta y no estoy muy de acuerdo con tu solución.

    Si hablamos de redimensionar una matriz para eliminar de la misma el último elemento que actualmente tenga establecido, entiendo que en lugar de quitarle una unidad a la longitud de la matriz tendríamos que quitarle dos unidades, ya que los índices están en base cero.

    Para que lo veamos más fácil, imaginemos que tenemos declarada la siguiente matriz alfanumérica con tres elementos:

        Dim MIARRAYESPERA() As String = {"1", "2", "3"}

    Si redimensionamos la matriz eliminando un elemento del tamaño de su longitud, lo que estamos haciendo es dejar la matriz con el mismo número de elementos que tiene:

        MIARRAYESPERA.Length - 1 => 3 - 1 = 2 => 3 elementos (0, 1, 2)

    Como los índices están en base cero, el primer elemento será el 0, el segundo el 1 y el tercero el 2, por tanto, la matriz continuará teniendo 3 elementos.

    Para redimensionar la matriz eliminando su último elemento, a la longitud de la matriz actual tenemos que quitarle dos unidades:

        ReDim Preserve MIARRAYESPERA(MIARRAYESPERA.Length - 2)

       

        MIARRAYESPERA.Length - 2 => 3 - 2 = 1 => 2 elementos (0, 1)

    Si estuviéramos utilizando el lenguaje C# otro gallo cantaría, pero se supone que el usuario Alvaro Fabian M está utilizando Visual Basic, por tanto, al número total de elementos (length - 1) tenemos que eliminarle otra unidad más para no tener en cuenta el último elemento de la misma: length - 2.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    miércoles, 29 de marzo de 2017 15:38
    Moderador
  • Me parece correcto lo que comentas. Muy buena observación Enrique. Gracias

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

    miércoles, 29 de marzo de 2017 16:14