Hola amigos hoy les traigo una clase que he hecho para javascript la cual te permite hacer:
Ordenar alfabéticamente una cadena
Ponerla a la inversa
Limpiarla de acentos
Convertirla en un arreglo ordenado o no y en mayúsculas o no
Esto lo hice en mis tiempos libres, no creo que sea muy útil pero la quiero compartir, y estaré agradecido si me dan su retroalimentación.
Saludos.
Código PHP:
function monerias(cadena) {
this.cadena = (cadena !== '' && typeof cadena === 'string') ? cadena : false;
this.limpia = '';
this.ascii = new Array();
this.from = 'ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç';
this.to = 'AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc';
this.mapping = {};
this.ret = new Array();
this.setCadena = function (val) {
this.cadena = val;
return this;
};
this.getCadena = function () {
return this.cadena;
};
this.clean = function () {
this.ascii = new Array();
this.limpia = '';
};
this.inverse = function () {
for (var i = 0; i <= this.cadena.length; i++) {
if (typeof this.cadena[(this.cadena.length - i)] !== 'undefined') {
this.limpia += this.cadena[(this.cadena.length - i)];
}
}
this.setCadena(this.limpia);
this.clean();
return this;
};
this.order = function () {
this.normalize();
for (var i = 0; i <= this.cadena.length; i++) {
if (typeof this.cadena[(this.cadena.length - i)] !== 'undefined') {
this.ascii[(i === 1) ? 0 : (i - 1)] = this.cadena[(this.cadena.length - i)];
}
}
this.ascii.sort();
for (var i in this.ascii) {
if (this.ascii[i] !== ' ') {
this.limpia += this.ascii[i];
}
}
this.setCadena(this.limpia);
this.clean();
return this;
};
this.toArray = function () {
this.inverse();
for (var i = 0; i <= this.cadena.length; i++) {
if (typeof this.cadena[(this.cadena.length - i)] !== 'undefined') {
this.ascii[(i === 1) ? 0 : (i - 1)] = this.cadena[(this.cadena.length - i)];
}
}
this.setCadena(this.ascii);
this.clean();
return this;
};
this.toUpper = function () {
this.setCadena(this.getCadena() .toString() .toUpperCase());
return this;
};
this.toLower = function () {
this.setCadena(this.getCadena() .toString() .toLowerCase());
return this;
};
this.normalize = function () {
for (var i = 0, j = this.from.length; i < j; i++) {
this.mapping[this.from.charAt(i)] = this.to.charAt(i);
}
for (var i = 0, j = this.cadena.length; i < j; i++) {
var c = this.cadena.charAt(i);
if (this.mapping.hasOwnProperty(this.cadena.charAt(i))) {
this.ret.push(this.mapping[c]);
} else {
this.ret.push(c);
}
}
this.setCadena(this.ret.join(''));
return this;
}
}
Y su implementación quedaría de la siguiente forma:
Código PHP:
var obj = new monerias('ejemplo');
//ejemplo para ordenar alfabéticamente en mayúsculas
console.log(obj.order().toUpper().getCadena());
//ejemplo para inversa
console.log(obj.inverse().getCadena());
//regresar un arreglo ordenado alfabéticamente en mayúsculas
console.log(obj.order().toArray().getCadena());