Inserire il separatore delle migliaia al posto giusto

La funzione che segue trasforma un ipotetico valore numerico 123456 in ‘123.456‘;

function applicaSeparatore(importoNumerico){
  var importo = importoNumerico.toString();
  if(importo.length>3){
    importo = importo.split('',importo.length).reverse().join('').replace(/([0-9]{3})/g,'$1.');
    importo = importo.split('',importo.length).reverse().join('');
  }
  return importo;
}

Commenti

3 risposte a “Inserire il separatore delle migliaia al posto giusto”

  1. Ho applicato una piccola modifica per modificare il segnatore dei decimali nel caso non fosse un intero:

    function applicaSeparatore(importoNumerico){  
          var importo = importoNumerico.toString();
    	  importo = importo.replace(".", ",")  
          if(importo.length>3){ 
            importo = importo.split('',importo.length).reverse().join('').replace(/([0-9]{3})/g,'$1.');  
            importo = importo.split('',importo.length).reverse().join(''); 
          }  
          return importo;  
        }
    
  2. function applicaSeparatore(importoNumerico){
    		
    		var importo = importoNumerico.toString();
    		importo = importo.replace(".", ",");
    		if(importo.length == 6){
    			importo = importo.split('',importo.length).reverse().join('').replace(/([0-9]{3})/g, '$1.');
    			importo = importo.split('', importo.length).reverse().join('');
    			importo = importo.replace(/^\./, "");
    		}else{
    			if(importo.length > 3){
    				importo = importo.split('',importo.length).reverse().join('').replace(/([0-9]{3})/g, '$1.');
    				importo = importo.split('', importo.length).reverse().join('');
    			}
    		}
    		return importo;
    		
    	}
    
  3. Grazie Andrea, per il contributo alla gestione dei decimali e Francesco per il bug sui valori costituiti da 6 caratteri (virgola/punto) compreso. Ho provato ad ottimizzare un po’ le vostre funzioni e il risultato è quello che segue:

    function applicaSeparatore2(importoNumerico){
      var importo = importoNumerico.toString();
      // Suggerimento di Andrea Rufo
      importo = importo.replace(".", ",")  
      if(importo.length>3){
        importo = importo.split('',importo.length).reverse().join('').replace(/([0-9]{3})/g,'$1.');
        importo = importo.split('',importo.length).reverse().join('');
      }
      // Riduzione degli IF proposti da Francesco
      return importo.replace(/^\./,'');
    }
    

    Cosa ne pensate?