Gute Morgen. Ich hab mich gestern ein wenig mit regulären Ausdrücken in Java beschäftigt und dazu ein kleines Programm geschrieben, das den Quellcode einer Website als String liefert. Auf diesen String kann dann durch eine weitere Methode ein regulärer Ausdruck angewendet werden. So lange Zeichenketten gefunden werden, die dem Pattern entsprechen, wird diese einer ArrayList hinzugefügt. Am Ende wird die ArrayList returned und kann auf der Konsole ausgegeben werden.
Es funktioniert dabei alles wie ich es mir vorgestellt habe. Ich möchte nur gerne wissen, was ihr von dem Design haltet. Habe ich gegen irgendwelche Konventionen verstoßen oder sogar etwas falsch gemacht?
Nun folgt mein Code aufgeteilt in zwei Klassen, die eine enthält die Funktionalität und die andere ist das Hauptprogramm.
Klasse mit der Funktionalität
Klasse mit der main method
Ich freue mich über hoffentlich viele Antworten
Es funktioniert dabei alles wie ich es mir vorgestellt habe. Ich möchte nur gerne wissen, was ihr von dem Design haltet. Habe ich gegen irgendwelche Konventionen verstoßen oder sogar etwas falsch gemacht?
Nun folgt mein Code aufgeteilt in zwei Klassen, die eine enthält die Funktionalität und die andere ist das Hauptprogramm.
Klasse mit der Funktionalität
Java:
package Classes;
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by The Frog on 16.02.2016.
*/
public class StringUtils {
// keine Objekterzeugung dieser Klasse
private StringUtils(){}
/**
* This method returns the source code of a website as a String object.
*
* @param url the source code location
* @return String returns source code as String.
* @exception IOException on input error
* @see IOException
*/
public static String getSourceCodeFromWebsite(String url)throws IOException{ //Weiterleitung der Exceptions an den Aufrufer
URL site = new URL(url);
String line;
String sourceCode="";
// try-with-resources
try(
BufferedReader breader = new BufferedReader(new InputStreamReader(site.openConnection().getInputStream()));){
while((line = breader.readLine())!=null){
sourceCode += line +"\r\n";
}
}
return sourceCode;
}
/**
*
* @param regex the regular expression that is applied to a String object.
* @param data the extraction String
* @return returns an arraylist containing Strings that matches the pattern.
*/
public static ArrayList<String> extractString(String regex,String data){
ArrayList<String> results = new ArrayList<>();
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(data);
while(m.find()){
results.add(m.group());
}
return results;
}
}
Java:
package Classes;
import java.io.IOException;
import java.util.ArrayList;
/**
* Created by The Frog on 17.02.2016.
*/
public class TestApp {
public static void main(String[] args) {
try {
ArrayList<String> jokesextracted = StringUtils.extractString("(<div class=\"joke\">)+.*?</div>", StringUtils.getSourceCodeFromWebsite("http://www.witze.net"));
// zeilenweise Ausgabe der ArrayList-Elemente
jokesextracted.forEach(System.out::println);
}catch(IOException e){
e.printStackTrace();
}
System.out.println("\n------------------\nEnde des Programms!");
}
}
Ich freue mich über hoffentlich viele Antworten