Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ordinare stringhe

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20

    [URGENTE] ordinare stringhe

    ciao a tutti,
    ho implementato un algoritmo di ordinamento per una matrice in memoria, che viene poi rappresentata su un documento html.
    chiaramente per fare il confronto dei valori faccio una cosa tipo

    if (vettore1[x]<vettore1[x+1]){
    //scambia elemento di pos. x con quello x+1
    }

    il problema sta solo quando ho dei dati alfanumerici. infatti se faccio

    1<10

    questo è true. e anche se faccio

    'prova'<'zio'

    questo è true. ma se faccio

    '1prova'<'10prova'

    questa mi torna false, mentre vorrei che tornasse true. in pratica dovrebbe "capire" che i numeri vanno trattati in modo quasi "separato" dai caratteri alfabetici. Sapete come posso fare?

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di Sgnafurz
    Registrato dal
    Mar 2003
    Messaggi
    2,182
    il fatto è che con gli alfanumerici i numeri vengono considerati alla stregua di stringhe
    prova invece, se è possibile, a separare numeri da lettere (magari se i numeri sono sempre all'iniuzio o sempre alla fine) e usa parseInte per ricavarti il valore intero

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20
    eh magari fosse così semplice...

    nel senso che la tua idea è buona (ci avevo pensato anche io) ma i dati che ho sono ricavati da un db, e sono codici di articoli o di qualsiasi altra cosa...
    In pratica posso avere un valore tipo

    11202321

    oppure

    ADDWQSA

    e qua non ho problemi. però potrei anche, ad esempio, avere targhe tipo

    AN132AS

    oppure numeri di container

    GETU12312312

    oppure ancora posizioni di magazzino mappate in 5 sensi, cioè

    ASK.123.21.WWW.T7

    capisci? se hai qualche altra idea ti ascolto!!!

  4. #4
    Utente di HTML.it L'avatar di Sgnafurz
    Registrato dal
    Mar 2003
    Messaggi
    2,182
    ma se i dati sono ricavati da db non è più semplice che la select in SQL venga fatta con un ORDER BY finale su quel campo che ti interessa per l'ordinamento?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20
    no perchè l'ordinamento deve (e ripeto DEVE) avvenire solo lato client, senza reinterrogare il DB.

    e il problema è che l'utente può anche ordinare per tutte le colonne che ci sono nella tabella, e magari ce ne sono 20...

    ad esempio clicco sulla colonna "indirizzo" e la tabella si ordina per indirizzo. poi cambio idea e voglio ordinare per "cognome", quindi clicco sull'intestazione della tabella...et voilà!

    e avanti così. Non faccio altri accessi al db perchè magari tiro fuori 1000 record e se devo reinterrogare per un'order by mi posso sparare!!!

  6. #6
    Utente di HTML.it L'avatar di Sgnafurz
    Registrato dal
    Mar 2003
    Messaggi
    2,182
    non saprei
    forse si può fare qualcosa con le Espressioni Regolari ma nn le conosco bene, chiedi a willybit lui le usa parecchio, cosi mi è parso di capire

  7. #7
    premetto che non ho guardato molto il tuo 3d ma hai provato con la funzione sort() ...è possibile fare ordinamenti di qualsiasi tipo...
    Let's your dream came true!

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    Re: [URGENTE] ordinare stringhe

    Originariamente inviato da Axel12
    '1prova'<'10prova'

    questa mi torna false, mentre vorrei che tornasse true. in pratica dovrebbe "capire" che i numeri vanno trattati in modo quasi "separato" dai caratteri alfabetici. Sapete come posso fare?
    Ciao a tutti,

    anche se facessi l'order by direttamente in SQL otterresti sempre che 10prova viene prima di 1prova.

    come lo vuoi fare l'ordinamento? Ordine alfabetico per la parte alfabetica e ordine numerico per la parte numerica? E se un codice è fatto così: 1AB2C ordini prima ABC e poi 12? Spiegami un po'

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20
    OK,
    mi sono confuso...chiedo scusa a tutti!

    il discorso era diverso, cioè solo sui numerici.

    se io ho 3 dati: 1,10 e 2, il mio algoritmo li mette in quest'ordine

    1 10 2

    mentre io li volevo come

    1 2 10

    ma per fare questo mi basta una parseInt...
    scusate ma sono già fuso ed è solo martedi...

    Spero di non avervi fatto perdere tempo,
    alla prox e ancora grazie a tutti!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.