Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75

    Inserire caratteri in una stringa ogni 2 caratteri

    Salve, devo convertire un valore del tipo: 200000 in 20:00:00, avevo pensato di utilizzare replace, ma senza un riferimento non so come utilizzarlo. C'è un modo alternativo oppure c'è un modo di applicare un valore ogni tot valori? (nel mio caso ogni 2 posizioni)

    Grazie
    Ultima modifica di ciro78; 20-02-2016 a 17:47 Motivo: titolo criptico

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non ho capito.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao,
    vedendo l'esempio presumo che il carattere "due punti" tu lo voglia ogni 2 caratteri partendo da destra.
    Con una regular expression potresti individuare facilmente i due caratteri partendo da sinistra. Si potrebbe fare anche partendo da destra ma trovo più semplice invertire la stringa, elaborarla con la regulra expression e poi re-invertirla.
    Potresti fare una funzione per invertire le stringhe
    codice:
    function invertiStringa(str){
        var valore='';
        for(var i=0;i<str.length;i++)valore=str.substr(i,1)+valore;
        return valore;
    }
    e poi la tua funzione per formattare con i "due punti"
    codice:
    function TuaFunzione(valore){
        return invertiStringa(invertiStringa(valore+'').replace(/(.{2})/g,'$1:')).replace(/^\:/,'');
    }
    in pratica inverto la stringa, metto i "due punti" ogni due caratteri, inverto il risultato ed elimino gli eventuali "due punti" iniziali.
    e qui ti metto un esempio di utilizzo
    codice:
    <script>
    function invertiStringa(str){
        var valore='';
        for(var i=0;i<str.length;i++)valore=str.substr(i,1)+valore;
        return valore;
    }
    function TuaFunzione(valore){
        return invertiStringa(invertiStringa(valore+'').replace(/(.{2})/g,'$1:')).replace(/^\:/,'');
    }
    document.write(TuaFunzione(200000)+'<br>');
    document.write(TuaFunzione(20000)+'<br>');
    document.write(TuaFunzione(200)+'<br>');
    document.write(TuaFunzione(20)+'<br>');
    document.write(TuaFunzione(2)+'<br>');
    </script>

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Si potrebbe fare anche partendo da destra ma trovo più semplice invertire la stringa
    Ciao, personalmente non vedo l'utilità di invertire la stringa.

    Io farei semplicemente così:
    codice:
    '200000'.replace(/(.{2}(?!$))/g,'$1:')
    o anche così:
    codice:
    '200000'.replace(/(..(?!$))/g,'$1:')
    Questo (?!$) fa in modo di escludere l'ultima occorrenza trovata, così da evitare l'inserimento dei due punti anche alla fine.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao, personalmente non vedo l'utilità di invertire la stringa.
    perché io presumo che i "due punti" voglia metterli ad ogni 2 caratteri partendo da destra.
    Per ottenere 2:00:00 nel caso il valore iniziale sia 20000
    Con la tua RE invece ottieni 20:00:0


  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    75
    Grazie ragazzi per le risposte, adesso mi studio i vari metodi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.