Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    perl: come cercare date in un testo??!

    Scrivete un programma che all’interno di una stringa o file di teso operi la seguente istruzione: cercare una stringa che definisca una data in formato MM/GG/YYYY. Se trova ad esempio 11/27/2009 deve stampare la stringa trovata così come è. Se invece la stringa è errata, tipo 23/11/2009 (GG/MM/YYYY) dovrò stamparla nel formato corretto. Se nel testo non c’è alcuna data deve stampare “No date found!”.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Sembra quasi un problema scolastico riproposto pari-pari sul forum ....
    (un minimo di spiegazione del contesto non guasterebbe).

    Comunque la soluzione deve avvenire per step successivi:
    1. ricerca della stringa NN/NN/NNNN
    2. verifica se la stringa e` una data valida e/o una data con giorno e mese invertito
    3.stampa.

    Il punto 1 ed il 2 si risolvono mediante regular expression (RE).
    Il Perl ha un ottimo supporto per le RE ed alcune pagine del manuale: perlretut, perlre, perlreref

    Sulle RE ci sono anche molti aiuti in rete: con una ricerca trovi molte cose, anche molto interessanti.

    Ad esempio io ho visto ora il sito http://regexlib.com/
    Ho selezionato "search" e quindi la categoria "Date and Time": il primo risultato potrebbe esserti utile (ma forse ce ne sono altri)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    >>divrebbe essere semplice. Consideri la stringa della data come una semplice stringa ( non ho fatto la lezione sulle date, quindi non serve). In pratica si tratta di manipolare una stringa di testo che rappresenta, ma solo casualmente, una data. Ma il fatto che sia una data non conta nulla.
    (NB: la data è una semplice stringa, non una data numerica! Pensate alla data come una stringa alfanumerica)<<

    questa è stata la risposta del mio prof.

    non è ke potrebbe aiutarmi risolvendolo.. ho provato gia a leggere un manuale trovato su internet spendendoci dietro un po di ore senza trovare alcuna soluzione ( mi sento ignorante!!).. mi manca solo questo esercizio ke è il piiu difficile.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il tuo prof vuole che impariate ad usare la testa, prima che le dita sulla tastiera, ed e` stato vago, come ero stato volutamente vago io.
    Se io ti risolvo l'esercizio, impari poco. Ti faccio solo fare un passettino in avanti.

    Si tratta di cercare una stringa in un'altra.
    La stringa da cercare e` formata da:
    codice:
    \\d{2}\\/\\d{2}\\/\\d{4}
    (ho raddoppiato le backslash per visualizzarle con sicurezza, ma probabilmente nella tua RE non dovrai farlo)
    Spiegazione: due cifre, una slash, due cifre, una slash, quattro cifre.

    se il file o la stringa in cui cercare e` su piu` righe e/o le date da cercare sono piu` di una, dovrai usare il /m oppure /s (vedi tu il significato di tali opzioni)

    Intanto prova con questa ricerca, il passo 2 lo puoi implementare successivamente.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5

    help urgente..

    io sinc.. nn ho molto seguito le lezioni.. e sn in un corso di laurea in biotecnologie..
    in realtà nella mia facoltà perl non serve piu di tanto ma il prof vuole ke lo impariamo per convertire dei geni da dna a rna.. cosa ke ho gia fatto.. ma io qst delle date nn l'ho proprio capito.. e nn so cm arrivarci..
    inolre devo inviarglelo tramite email entro stassera..

    ho provato a chiedere al professore altri chiarimenti e mi ha risposto:

    Ho dato un'occhiata veloce alla vostra domanda "incriminata" ed è molto più semplice del previsto.
    A voi basta cercare la stringa:
    "numero qualunque di 1-2 cifre"/"numero qualunque di 1-2 cifre"/"numero qualunque di 4 cifre"

    memorizzando i 3 pezzi separati dagli / in $1, $2, $3. Poi con if valuate i valori di $1 e $2 in modo che siano pertinenti con una data, e poi stampate

    $1/$2/$3
    o
    $2/$1/$3

    a seconda dei valori

    Se volete essere più precisi controllate anche che l'anno sia > 1900 (ho aggiunto nella domanda che sennò va bene anche 1200, 700 ecc...troppo laborioso!)ho provato a chiedere altri chiarimenti

    vi prego.. !!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come avrai notato il mio aiuto coincide con un pezzo dell'aiuto del prof ... non e` un caso.

    Comunque o hai gia` usato le RE, e allora la cosa e` banale; oppure non sai cosa sono le RE e allora tutti questi aiuti sono inutili: devi studiarti il capitolo sulle RE del tuo manuale Perl preferito (in alternativa ce n'e` uno sul sito di HTML.it ed uno nel sito di shishii).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.