[Java] Diccionario Online 0.1

Iniciado por BigBear, Febrero 12, 2013, 02:07:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Practicando en este lenguaje hice este simple diccionario online , solo ponen una palabra y el programa les devuelve el significado (si es que lo encuentra xDD)

Código: java

//Diccionario Online 0.1
//Coded By Doddy H

import java.util.Scanner;
import java.net.*;
import java.io.*;

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

public class Main {

    public static void main(String[] args) throws Exception {

        String code;

        String palabra;

        Scanner host = new Scanner(System.in);
        System.out.println("\n\n-- == Diccionario Online 0.1 == --\n\n");
        System.out.println("[+] Palabra : ");
        palabra = host.nextLine();

        code = toma("http://es.thefreedictionary.com/" + palabra);

        Pattern uno = null;
        Matcher dos = null;

        uno = Pattern.compile("<div class=runseg><b>1 </b>&nbsp; (.*?)[.:<]");
        dos = uno.matcher(code);

        if (dos.find()) {
            System.out.println("\n" + dos.group(1));
        } else {
            System.out.println("\n[-] No se encontro el significado");
        }

        System.out.println("\n\n-- == Coded By Doddy H == --\n\n");

    }

    private static String toma(String urla) throws Exception {

        String re;

        StringBuffer conte = new StringBuffer(40);

        URL url = new URL(urla);
        URLConnection hc = url.openConnection();
        hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");

        BufferedReader nave = new BufferedReader(
                new InputStreamReader(hc.getInputStream()));

        while ((re = nave.readLine()) != null) {
            conte.append(re);
        }

        nave.close();

        return conte.toString();
    }
}

//The End ?

Muy buen código, las expresiones regulares son geniales.

Aunque, hablando como un usuario, sería preferible que mostrase más de un significado de la misma palabra (en caso de encontrarse, claro) en lugar de tomar solo el patrón primero como lo estás haciendo: <div class=runseg><b>1 </b>&nbsp; (.*?)[.:<]

pd: me llama la atención el hombre que le diste a la variable de tipo Scanner, "host", ojo: se recomiendan variables con nombres lo más sugerentes posibles.


Saludos.
¡< blozzter >!

ok , gracias por las sugerencias.