Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Gestione Stringhe JAva

  1. #1

    Gestione Stringhe JAva

    Buongiorno a tutti
    ho bisogno di un aiuto per elaborare alcune stringhe in java.
    Ho una stringa del tipo << pippo -20-10-2- pluto -10-3-40- paperino>>
    dove la parte numerica corrisponde al codice associato alla parola. Questi codici non hanno lunghezza fissa ma sono separati dalle parole dal segno - .
    Io dovrei ottenere un elenco delle sole parole, ma non riesco a definire un algoritmo per risolvere il problema.
    Vi ringrazio

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,001
    Precisa meglio: dato il tuo esempio vuoi ottenere solo "pippo", "pluto", "paperino" o altro? Cioè, data in input la stringa del tuo esempio, cosa deve dare come output?

    Inoltre, è corretto (quindi plausibile) che per l'ultima parola ("paperino") non vi sia nulla accanto?

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da poco esperto Visualizza il messaggio
    Ho una stringa del tipo << pippo -20-10-2- pluto -10-3-40- paperino>>
    dove la parte numerica corrisponde al codice associato alla parola. Questi codici non hanno lunghezza fissa ma sono separati dalle parole dal segno - .
    Io dovrei ottenere un elenco delle sole parole, ma non riesco a definire un algoritmo per risolvere il problema.
    Innanzitutto: la stringa comprende davvero (come si vede sopra) "<<" all'inizio e ">>" alla fine oppure no?

    Se li comprende, dovresti prima fare un substring per prendere solo la parte interna. A quel punto puoi fare uno split (metodo split() di String) usando "-" come espressione regolare di separatore. A quel punto ottieni un String[] con tanti "token". Vedo che ci sono spazi attorno ai "-". Li puoi togliere tu da ogni token con un trim() oppure si può anche pensare ad una espressione regolare di split che contempli gli spazi attorno al "-".

    Per dubbi specifici, chiedi.
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)

  4. #4
    Grazie scusate le imprecisioni
    no! non ci sono le virgolette "<<" all'inizio e alla fine
    inoltre ho omesso il codice associato a "paperino"; quindi la stringa è del tipo:
    pippo -20-10-2- pluto -10-3-40- paperino -14-2-
    e c'è lo spazio attorno ai "-".
    Il risultato che vorrei è proprio i singoli "token": pippo pluto paperino
    Ho visto velocemente il metodo split(), cosa passo come argomento se non so quanti token posso trovare nella stringa?

  5. #5
    Quote Originariamente inviata da poco esperto Visualizza il messaggio
    pippo -20-10-2- pluto -10-3-40- paperino -14-2-
    e c'è lo spazio attorno ai "-".
    Ok ma giusto per capire la forma "generale" (di cui ora non ho idea io): pippo/pluto/paperino sono 3 token, ok. Ma "-20-10-2-" è un token unico per te ... o sono 3 token distinti? (cioè "20" poi "10" poi "2")
    Chiarisci questo, innanzitutto.

    Indipendentemente dalla domanda sopra: tu vuoi scartare i numeri e prendere solo i testi? O no?
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)

  6. #6
    Per me quello numerico è un token unico, non mi interessa lo devo eliminare.
    Può avere lunghezza variabile, ma è sempre compreso tra due trattini "-"

    in pratica se c'era una tabella con due colonne
    testo | codice

    pippo | -20-1-23-
    paperino | -23-6-1-10-
    pluto | -3-4-7-0-

    io avrei analizzato solo la prima colonna

  7. #7
    Quote Originariamente inviata da poco esperto Visualizza il messaggio
    Per me quello numerico è un token unico, non mi interessa lo devo eliminare.
    Può avere lunghezza variabile, ma è sempre compreso tra due trattini "-"
    Ah ecco! Questo è importante da sapere.

    Quote Originariamente inviata da poco esperto Visualizza il messaggio
    in pratica se c'era una tabella con due colonne
    testo | codice

    pippo | -20-1-23-
    paperino | -23-6-1-10-
    pluto | -3-4-7-0-

    io avrei analizzato solo la prima colonna
    Ma scusa, quindi nella stringa hai più "celle" accodate una dietro l'altra? E perché sarebbe stata pensata così questa stringa?
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,001
    codice:
    String[] tokens = tuaStringa.split(" ");

    A questo punto consideri solo le posizioni pari dell'array (0, 2, 4, ecc), poichè in quelle dispari hai il "codice" che a te non interessa.

    codice:
    for(int i=0; i<tokens.length; i+=2) {
       System.out.println( tokens[i] );
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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