[Java Script] )(Split) Como obtener datos de un String como un config.ini

Iniciado por Brian1511, 29 Julio 2015, 21:32 PM

0 Miembros y 2 Visitantes están viendo este tema.

Brian1511

Hola amigos espero que me puedan ayudar con esta incognita que tengo ahora.

Quiero saber como con javascript puedo hacer un Split que me obtenga datos como los de un archivo INI que seria mas o menos haci:

[Config]
Opcion1=1234
Opcion2=5678

[Paths]
Path1=/juegos/
Path2=/musica/


Algo haci entonces quiero de este string obtener los valores ejemplo:


-1234
-5678

-/juegos/
-/musica/


Ya se como cargar el archivo solo quiero saber como obtener estos datos mediante splits?

Gracias y un saludo!



Creador de BrainMind

Eleкtro

Una manera de hacerlo sería la siguiente:


  • Iterar las lineas del archivo de texto.
  • Comprobar si la linea actual contiene el caracter "=".
  • Partir la linea en un Array usando el caracter "=".
  • Deslizar el Array para eliminar el primer elemento que no nos interesa para nada.
  • Unir el Array para obtener los datos deseados (en la variable value)

Código (javascript) [Seleccionar]
// Implementaciones
String.prototype.contains = function(str) {
   return this.indexOf(str) > -1;
};
String.prototype.trim = function() {
   return this.replace(/^\s+|\s+$/g, "");
};

var str =
   '[Sección]                   \n' +
   'Variable1=Valor1            \n' +
   'Variable2=Valor2=más=complejo ';

var lines = str.split('\n');

for(var i = 0;i < lines.length;i++){

if (lines[i].contains('=')) {

   var parts = lines[i].split('=');
   parts.splice(0, 1);

   var value = parts.join('=').trim();
   // hacer con value lo que plazca...
}

}


Saludos








Brian1511

Gracias amigo en serio, pero una ultima preguntita y perdona mi ignorancia.
Como lo uso? es decir me escribiste que hiciera con value lo que quisera pero... Seria algo como
var Opcion1 = value[0] // El primer valore en el l



Creador de BrainMind

T. Collins

#3
Es un bucle, por cada opción en el archivo el bucle pasa una vez por la línea:
Código (javascript) [Seleccionar]
// hacer con value lo que plazca...
y value contiene la opción correspondiente.

En el ejemplo de Elektro el bucle pasa 2 veces, la primera value = "valor1" y la segunda value = "Valor2=más=complejo"

Puedes cambiar
Código (javascript) [Seleccionar]
// hacer con value lo que plazca... por
Código (javascript) [Seleccionar]
miarray.push(value); y tendras todas las opciones guardadas es miarray

MinusFour

Código (javascript) [Seleccionar]
function parseINI(iniStr){
    var obj = { },
        lineBreak = '\n', //Could be \r\n for Windows systems
        currentSection;
    iniStr.split(lineBreak).forEach(function(line){
        var section = (/^\[(.*)\]/).exec(line);
        if(section){
            currentSection = section[1];
            obj[currentSection] = { };
        } else {
            var equalPos = line.indexOf('=');
            if(equalPos){
                var key = line.substr(0, equalPos);
                var value = line.substr(equalPos+1);
                obj[currentSection][key] = value;
            }
        }
    });
    return obj;
}


Y es muy sencillo:

Código (javascript) [Seleccionar]

var conf = parseINI(elArchivoAqui);
//conf.sección.variable <- Tiene la variable aqui.


Lo mejor sería que usaras JSON y simplemente usaras JSON.parse, asi puedes serializar estructuras de javascript.

Brian1511

Hola, wow bastantes respuestas muy buenas de parte de ustedes.
Muchas gracias, ahora mismo probare cada uno de los codigos.

PD: No uso JSON porque en si no es javascript es una app que usa javascript para crear modificaciones a un juego y tiene su propia API.



Creador de BrainMind