Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Experimento monerias con strings

Estas en el tema de Experimento monerias con strings en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/06/2014, 14:30
Avatar de thedaket  
Fecha de Ingreso: junio-2011
Mensajes: 55
Antigüedad: 13 años, 5 meses
Puntos: 3
Sonrisa Experimento monerias con strings

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 
0<= this.cadena.lengthi++) {
      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 
0<= this.cadena.lengthi++) {
      if (
typeof this.cadena[(this.cadena.length i)] !== 'undefined') {
        
this.ascii[(=== 1) ? : (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 
0<= this.cadena.lengthi++) {
      if (
typeof this.cadena[(this.cadena.length i)] !== 'undefined') {
        
this.ascii[(=== 1) ? : (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 
0this.from.lengthji++) {
      
this.mapping[this.from.charAt(i)] = this.to.charAt(i);
    }
    
    for (var 
0this.cadena.lengthji++) {
      var 
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()); 
__________________
Sí AJAX quieres usar jQuery debes agregar...

Última edición por thedaket; 24/06/2014 a las 14:31 Razón: Ver si queda mejor con el codigo BB [PHP][/PHP]
  #2 (permalink)  
Antiguo 24/06/2014, 15:29
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Experimento monerias con strings

Si vas a modificar el objeto String, le puedes meter directamente los métodos al prototipo de ese objeto para que se puedan usar siempre.
Por otro lado, es muy importante conocer los métodos nativos de los que dispone el lenguaje para concentrar el código en órdenes mas simples con muchas menos líneas.

Código Javascript:
Ver original
  1. String.prototype.limpiar=function(){
  2.     var reemplazos={á:'a', Á:'A',é:'e', É:'e',í:'i', Í:'i',ó:'o', Ó:'o',ú:'u', Ú:'u',ñ:'n', Ñ:'n'};
  3.     return this.replace(/./g,function(target, index, str){ return (reemplazos[target] || target); });
  4. };
  5. String.prototype.reverso=function(){
  6.     return this.split('').reverse().join('');
  7. };
  8. String.prototype.ordenar=function(){
  9.     return this.replace(/[^\wñÑáéíóúÁÉÍÓÚ]/g,'').split('').sort().join('');
  10. };
  11.  
  12. var str="Satélite, España, Árbol";
  13. console.log(str.limpiar());
  14. console.log(str.reverso());
  15. console.log(str.ordenar());

http://jsfiddle.net/marlanga/2Z7uq/

Etiquetas: acentos, alfabeticamente, mayusculas, minusculas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:37.