Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    10

    [java]parole Racchiuse Fra Caratteri

    Ciao a tutti,
    ho un file di testo dove ci sono delle parole racchiuse fra il carattere #.Come faccio a farle apparire a video?
    il file e' fatto cosi':


    ciao #ragazzi# come state? Io abbastanza #bene#
    oggi e' una #giornata# molto fredda.


    l'output deve essere questo


    ragazzi
    bene
    giornata

    GRAZIE A TUTTI
    xxx

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao. Nel jdk 1.4 c'č un metodo della classe String che fa al caso tuo; prova con:

    String pippo = "#kdfjņslakfjsald#";
    pippo = pippo.replaceAll( "#","" );
    System.out.println( pippo );
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    10

    no alt...un attimo

    non ho capito....
    io devo cercare le parole che hanno un # all'inizio e alla fine... da un file di testo....


    ciao #ragazzi# come state? Io abbastanza #bene#
    oggi e' una #giornata# molto fredda.


    devo cercare in un testo solo le parole che sono racchiuse fra 2 #


    perche' dovrei fare un replace?
    grazie
    xxx

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    10

    MA...

    nessuno ha qualche idea su come potrei fare?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Beh... hai due possibilitą:

    1) Vedi la classe StringTokenizer e provi ad utilizzarla: questa classe mette a disposizione dei meccanismi per selezionare i separatori dei vari tokens, quindi potresti impostare come separatore il carattere # in modo che lui consideri come token a se stante tutto quello che appare fra un # e l'altro

    2) Tenti di implementare da solo un tokenizer con questa caratteristca: devi lavorare parecchio sulle stringhe, carattere per carattere, in modo da isolare i vari tokens.

    Comunque, non dovrebbe essere difficile fare una cosa del genere. Se ho un po' di tempo provo ad implementarne uno io e se no hai ricevuto ulteriori risposte nel frattempo, te lo posto.


    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

  6. #6
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413
    l'idea č il modo in cuo implementarlo.. poi il codice te lo scrivi tu


    apri il file
    ciclo 1
    iteri e prendi la riga corrente

    ciclo 2
    imposti una variabile intera variabile1, e la setti con l'indexof "#" della stringa corrente
    fai il replaceFirst "#" con ""
    imposti un altra variabile, variabile2 con l'indexOf "#"
    fai il replaceFirst "#" con ""

    fine ciclo2
    fine ciclo1

    ora prendendo la substring tra variabile1 e variabile2 hai la prima parola racchiusa tra "#" e "#"
    ti basta ripetere il ciclo2 finchč indexOf > -1
    e ciclo1 fino a eof

    ciao

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Io ho realizzato un tokenizer, che fa al caso tuo. Basta che tu istanzi un oggetto di questa classe, che gli setti il separatore che vuoi e la stringa da parserizzare e poi, tramite l'uso combinato dei metodi hasMoreElements() e getNext() puoi ricavarti tutte le parole e/o frasi comprese fra il tuo separatore.
    Nella classe ho incluso un driver di verifica: puioi testare subito la classe avviandola e vedrai apparire a video le parole racchiuse fra il separatore #.
    codice:
    public class MioTokenizer {
    
       private char separatore;
       private String stringa;
       private int posStart;
       private int posFine;
    
       public MioTokenizer() {
          separatore = ' ';
          posStart = posFine = 0;
       }
    
       public MioTokenizer(char separatore) {
          this.separatore = separatore;
          posStart = posFine = 0;
       }
    
       public MioTokenizer(String stringa) {
          this.stringa = stringa;
          separatore = ' ';
          posStart = posFine = 0;
       }
    
       public MioTokenizer(char separatore, String stringa) {
          this.separatore = separatore;
          this.stringa = stringa;
          posStart = posFine = 0;
       }
    
       public String getNext() {
          String token = null;
          if (hasMoreElements()) {
             int i = posFine + 1;
             boolean trovato = false;
             while ((i < stringa.length()) && !trovato) {
                if (stringa.charAt(i) == separatore) {
                   trovato = true;
                } else {
                   i++;
                }
             }
             if (trovato) {
                posStart = i;
                int j = posStart+1;
                boolean trovato2 = false;
                while ((j<stringa.length()) && !trovato2) {
                   if (stringa.charAt(j) == separatore) {
                      trovato2 = true;
                   }
                   posFine = j;
                   j++;
                }
                token = (trovato2) ? stringa.substring(posStart+1, posFine) : 
                                     stringa.substring(posStart+1, posFine+1);
             }
          }
          return token;
       }
    
       public void setStringa(String stringa) {
          this.stringa = stringa;
          posStart = posFine = 0;
       }
    
       public void setSeparatore(char separatore) {
          this.separatore = separatore;
          posStart = posFine = 0;
       }
    
       public boolean hasMoreElements() {
          boolean risposta = false;
          int i = posFine + 1;
          while (i<stringa.length() && !risposta) {
             if (stringa.charAt(i) == separatore) risposta = true;
             i++;
          }
          return risposta;
       }
    
       public static void main(String [] args) {
          String miaStringa = "Questa č la #stringa# da #tokenizzare# per vedere se #funziona#";
          MioTokenizer mt = new MioTokenizer('#', miaStringa);
          while (mt.hasMoreElements()) {
             System.out.println(mt.getNext());
          }
       }
    }
    Spero che ti vada bene.


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