Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Marcus en 10 de Junio 2022, 15:35

Título: Editar elemento de un arreglo join poner comillas cuando se detecte tipo dato
Publicado por: Marcus en 10 de Junio 2022, 15:35
Hola, tengo una consulta, en verdad agradecería de su ayuda:))

necesito agregar comillas simples a un elemento en especifico de un arreglo, por ejemplo si el elemento del arreglo values es de tipo varchar se le agregara comillas simples, mientras tanto al elemento que sea de tipo int, no se le agregara comillas. de hecho ya le habia asignado las comillas, pero como estoy manejando un list, las comillas se agregan a todos los elementos del arreglo values y yo solo quiero asignarle a quienes sean verificados como de tipo "VARCHAR", aqui les dejo el codigo

private string CreateCSV(IDataReader reader)
        {
           
            List<string> lines = new List<string>();
            string headerLine = "";
            string fastline = "";
while (reader.Read())
            {
                string[] columns = new string[reader.FieldCount];
                object[] values = new object[reader.FieldCount];

for (int index = 0; index < reader.FieldCount; index++)
                {

                    values[index] = reader.GetValue(index);
                    string valor = reader.GetDataTypeName(index);
                    if (valor == "VARCHAR")
                    {
                    //solo quiero tomar el elemento del arreglo values y asignarle las comillas
                    }
                    fastline = string.Join(",", values.Select(x => string.Format("'{0}'", x)));
                         //aqui se le agregan comillas pero a todos los elementos del arreglo,
                         //de hecho la linea string.format se omitiria porque le asignare las
                         comillas simples antes
                }

}
          System.IO.File.WriteAllLines(file,lines);



            string prueba = String.Concat(lines);
            MessageBox.Show(prueba);
            return file;
}
Título: Re: Editar elemento de un arreglo join poner comillas cuando se detecte tipo dato
Publicado por: Ogramar en 02 de Septiembre 2022, 18:51
Buenas, para escribir en los foros recomendamos leer https://aprenderaprogramar.com/foros/index.php?topic=1460.0 y pegar el código y poner título a los temas según se indica ahí.

No sé si entiendo lo que quieres plantear. Tal y como lo describes, entiendo que quieres que el valor del array pase a tener comillas cuando detectes que el tipo de dato es VARCHAR.

En este código (no demasiado elegante, pero creo que puede valer como ejemplo) planteo lo siguiente:

- Creo un array de cadenas que llamo tipoDato con contenido inicial {"LONG", "LONG", "VARCHAR", "SHORT", "VARCHAR", "DOUBLE", "DOUBLE"};

- Creo un array de supuestos valores con contenido inicial {"esto es long", "esto es long", "esto es otro varchar", "esto es short", "esto es varchar", "esto es double", "esto es double"};

- Recorro el array de tipoDato, y cuando detecto que es VARCHAR, le añado comillas al value.

Nota: no se recomienda la modificación de elementos de una colección al recorrerla sino usando un iterador (ver https://aprenderaprogramar.com/index.php?option=com_content&view=article&id=633:tipo-iterator-api-java-ejemplo-error-javautilconcurrent-modificationexception-resumen-bucles-cu00667b&catid=68&Itemid=188)

El código:

Código: [Seleccionar]
public class Test {

    public static void main (String[] Args) {

        String[] tipoDato = {"LONG", "LONG", "VARCHAR", "SHORT", "VARCHAR", "DOUBLE", "DOUBLE"};
        String[] valueEjemplo = {"esto es long", "esto es long", "esto es otro varchar", "esto es short", "esto es varchar", "esto es double", "esto es double"};

        for (int index = 0; index < tipoDato.length; index++) {
            System.out.println((index+1)+": "+tipoDato[index]+" "+ valueEjemplo[index]);
            if (tipoDato[index].equals("VARCHAR")){
                System.out.println("Detectado VARCHAR");
                valueEjemplo[index] = "\"" + valueEjemplo[index] + "\"";
                System.out.println("Modificado el value ahora vale "+valueEjemplo[index]);
            }
        }

        for (int index = 0; index < tipoDato.length; index++) {
            System.out.println((index+1)+": "+tipoDato[index]+" "+ valueEjemplo[index]);
        }
    }
}

Salu2