melado escribió:Si alguien quiere demostrar que estoy equivocado y que soy un inútil, estaré encantado de ser ridiculizado en público
/*
*** Recibe el texto del mensaje
*** Devuelve el mensaje con los quotes sobrantes eliminados
*/
function procesarMensaje(texto) {
var limit_anidamiento = 3;
var index_abierto;
var index_cerrado;
var aninados = 0;
var resultado = "";
var start = 0;
var new_start;
var infinito = texto.length+1
var abierto = "[quote";
var cerrado = "[/quote]";
do
{
index_abierto = infinito;
index_cerrado = infinito;
index_abierto = texto.indexOf(abierto,start);
if (anidados > 0)
index_cerrado = texto.indexOf(cerrado,start);
index_abierto = normaliza(index_abierto,infinito);
index_cerrado = normaliza(index_cerrado,infinito);
if (index_abierto > index_cerrado)
{
new_start = index_abierto;
aninados++;
}
else
{
new_start = index_cerrado + cerrado.length; // hay que saltarse la etiqueta [/quote]
anidados--;
}
if (anidados <= limit_anidamiento)
{
resultado.concat(texto.substring(start,new_start));
}
start = new_start;
} while(start < texto.length);
return resultado;
}
function normaliza(index,tam){
return index == -1 ? tam : index;
}
[quote="usuario"][quote[/quote]
/*
*** Recibe el texto del mensaje
*** Devuelve el mensaje con los quotes sobrantes eliminados
*/
function procesarMensaje(texto) {
var limit_anidamiento = 3;
var index_abierto;
var index_cerrado;
var anidados = 0;
var resultado = "";
var start = 0;
var new_start;
var infinito = texto.length+1
var abierto = "[quote\"";
var abierto_simple = "[quote]"
var cerrado = "[/quote]";
do
{
index_abierto = infinito;
index_cerrado = infinito;
index_abierto = texto.indexOf(abierto_simple,start);
var abierto_incompleto = texto.indexOf(abierto,start);
if (abierto_incompleto != -1 && abierto_incompleto < index_abierto)
{
var fin_comillas = texto.indexOf("\"]",abierto_incompleto);
if (fin_comilas != -1)
{
index_abierto = abierto_incompleto;
}
}
if (anidados > 0)
index_cerrado = texto.indexOf(cerrado,start);
index_abierto = normaliza(index_abierto,infinito);
index_cerrado = normaliza(index_cerrado,infinito);
if (index_abierto > index_cerrado)
{
new_start = index_abierto;
aninados++;
}
else
{
new_start = index_cerrado + cerrado.length; // hay que saltarse la etiqueta [/quote]
anidados--;
}
if (anidados <= limit_anidamiento)
{
resultado.concat(texto.substring(start,new_start));
}
start = new_start;
} while(start < texto.length);
return resultado;
}
function normaliza(index,tam){
return index == -1 ? tam : index;
}Si de verdad te animas a hacer algo funcional te animo a que pruebes a montarlo en jsfiddle.


unodostres
melado escribió:Me ha dado muchos más problemas de los que esperaba pero al final le encontré las cosquillas :D
Intentad citar este mensaje para ver cómo funciona (si funciona xD).unodos
Deschamps escribió:melado escribió:Me ha dado muchos más problemas de los que esperaba pero al final le encontré las cosquillas
Intentad citar este mensaje para ver cómo funciona (si funciona xD).uno
Volando voy, volando vengo...
pd/ Al intentar enviarlo aparece el mensaje "No puedes anidar más de 3 citas así que hemos eliminado de tu mensaje las más antiguas"
Edito: Genial, un millón de gracias.
Senegio escribió:Deschamps escribió:
Volando voy, volando vengo...
pd/ Al intentar enviarlo aparece el mensaje "No puedes anidar más de 3 citas así que hemos eliminado de tu mensaje las más antiguas"
Edito: Genial, un millón de gracias.
IN MELADO WE TRUSTDeschamps escribió:melado escribió:Me ha dado muchos más problemas de los que esperaba pero al final le encontré las cosquillas
Intentad citar este mensaje para ver cómo funciona (si funciona xD).
Volando voy, volando vengo...
pd/ Al intentar enviarlo aparece el mensaje "No puedes anidar más de 3 citas así que hemos eliminado de tu mensaje las más antiguas"
Edito: Genial, un millón de gracias.