Hola derkenuke y JavierB:
He contrastado el ejemplo de JavierB con el mío, y hay una diferencia de 1, cuando se indexa se empieza por el 0, y por eso cuando en cuestiones numéricas hay fallos se suele devolver -1...
Por eso en mi ejemplo para que devuelva el mismo resultado hay que restar uno...
var total = lugar - 1; // cambiando esta línea.
Y para que la propuesta de JavierB devuelva -1 en los fallos, habría que cambiarlo en la linea que devuelve null
Por otra lado hay una chapucilla (creo
) en donde pone
cad=cad.substr(p+1,250);
supongo que 250 se refiere a la longitud de la cadena, si es así creo que sería conveniente
cad=cad.substr(p+1, this.length);
Usar los prototipos me parece una idea muy buena y elegante (ya lo dije en anteriores ocasiones)
Otra variante con prototipos sería:
Código PHP:
String.prototype.subcadena = function(cadena, lugar) {
var dividir = this.split(cadena);
if (dividir.length <= lugar) return -1;
else {
var total = (lugar - 1) * cadena.length;;
for (i = 0; i < lugar; i ++)
total += dividir[i].length;
return total;
}
}
Saludos