PDA

View Full Version : [JAVA] Programma di lavoro con i file


Blade86
22-02-2008, 16:33
Il programma ke sto provando a fare è il seguente:
Dato un file, in cui è presente un testo, ho una parola da ricercare in questo file.
Il programma deve fornire il numero della linea in cui si trova la parola, e la posizione della parola ricercato nella linea (carattere iniziale della parola), poi deve dire se è una sottostringa della parola o e una parola intera . Io ho impostato così:

public class LineNumberer
{
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
System.out.print("Input file: ");
String inputFileName = console.next();
System.out.print("Parola da ricercare: ");
String parola = console.next();

try
{
FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);



while (in.hasNextLine())
{
////////////////// codice in progresso ///////////////////
}

out.close();
}
catch (IOException exception)
{
System.out.println("Error processing file: " + exception);
}
}
}

Se potreste aiutarmi a impostare parte del codice mancante grazie a tutti in anticipo!!!!!!

Blade86
22-02-2008, 17:32
Uppp!!!! forse devo utilizzare indexOf

smodeus
22-02-2008, 22:48
Ti sconsiglio di usare indexOf: questo metodo infatti ti permette di trovare l'indice della stringa passata in ingresso nella stringa oggetto ma poi c'è il problema di individuare le varie occorrenze e di capire se la parola è intera o meno.
Una soluzione migliore consiste sicuramente nell'usare le regular expression, che sono rappresentate in java standard con le classi java.util.regex.Pattern e java.util.regex.Matcher. Il loro uso è piuttosto semplice


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Trentini {

public static void main(String args[]){

String t="trentatrè trentini entrarono in trento tutti "+
"e trentatrè trotterellando trenta trenta";

Pattern pattern=Pattern.compile("trent[^\\s]+");
Matcher matcher=pattern.matcher(t);

while(matcher.find()){
System.out.println(matcher.start()+";"+matcher.group());
}
}

}

output:
0;trentatrè
10;trentini
32;trento
47;trentatrè
72;trenta
79;trenta

Matcher Api (http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Matcher.html)
Pattern Api (http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html) contiene anche una tutorial sulle regular expression

Blade86
25-02-2008, 11:18
Grazie smodeus proverò a fare così... poi ti farò sapere grazie ancora....