ho il seguente codice:
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.*;
/
public class RegexSimple4
{
public static void main(String[] args) {
try
{
Scanner myfis = new Scanner(new File("D:\\myfis32.txt"));
ArrayList <String> foundaz = new ArrayList<String>();
ArrayList <String> noduplicates = new ArrayList<String>();
while(myfis.hasNext())
{
String line = myfis.nextLine();
String delim = " ";
String [] words = line.split(delim);
for (String s : words) {
if (!s.isEmpty() && s != null)
{
Pattern pi = Pattern.compile("[aA-zZ]*");
Matcher ma = pi.matcher(s);
if (ma.find()) {
foundaz.add(s);
}
}
}
}
if(foundaz.isEmpty())
{
System.out.println("No words have been found");
}
if(!foundaz.isEmpty())
{
int n = foundaz.size();
String plus = foundaz.get(0);
noduplicates.add(plus);
for(int i=1; i<n; i++)
{
if(!noduplicates.get(i-1).equalsIgnoreCase(foundaz.get(i)))
{
noduplicates.add(foundaz.get(i));
}
}
//System.out.print("Cuvantul/cuvintele \n"+i);
}
if(!foundaz.isEmpty())
{ System.out.print("Original text \n");
for(String s: foundaz)
{
System.out.println(s);
}
}
if(!noduplicates.isEmpty())
{ System.out.print("Remove duplicates\n");
for(String s: noduplicates)
{
System.out.println(s);
}
}
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
Con lo scopo di rimuovere i duplicati consecutivi da frasi. Il codice funziona solo per una colonna di stringhe non per frasi a lunghezza intera.
Per esempio il mio ingresso dovrebbe essere:
bla bla topi cane gatto. Gatto cane cane topi.
E i topi Blah cane gatto uscita
. Cane topi gatto.
Sincerly,
Ma come io uso il tuo regex nel mio programma. Ho un file come input e vorrei visualizzare il suo contenuto senza ridondanza usando System.out.print. Grazie :-) – SocketM
Grazie mille, ma cosa significa $ 1 :-)? – SocketM
@SocketM: Quella è una variabile speciale che fa riferimento al contenuto del primo [gruppo di acquisizione] (http://www.regular-expressions.info/brackets.html), in questo caso la prima parola (che vogliamo mantenere) . –