TeilString extrahieren



  • Moin @all,
    ich mal wieder mit einem Prob 🙄

    Also ich habe z.B.folgenden Inhalt in einer Datei:
    -->*
    //=============================================================================
    // Function: Checks for something
    //
    // input: something in
    // output: something out
    //=============================================================================

    package displaytester;

    public class Probe
    {

    public String Probe(String name)
    {

    String type="";
    String Dateiname=name.substring(name.length()-4,name.length());
    .
    .
    .
    *<--

    Diesen lese ich ich über FileReader ein. Ich möchte gerne den Bereich zwischen dem Wort "package" und dem Semikolon als TeilString (hier wäre es displaytester) haben. Die gesamte Datei kann ich noch in einen String einlesen, aber dann verlassen sie mich! Ich habs schon mit indexOf() versucht aber das klappt nicht.

    Hier ist mal der Teil den ich schon habe (quasi nix):

    import java.io.*;
    import java.lang.*;
    
    public class PackageTest {
    
    //-----------------------------------------------------------------------
    //input: String Datei = File and Path
    //
    //output: searched Package
    //-----------------------------------------------------------------------
    
      public static String PackageTest(String Datei) {
        String Suche = new String();
        String Ojk1 = new String("package");
        String Found = new String();
    
        try{
            FileReader temp_dat = new FileReader(Datei);
            BufferedReader temp_in = new BufferedReader(temp_dat);
            String temp = new String(temp_in.readLine());
            Suche =  
        }
        catch (IOException e){
             e.printStackTrace ();
        }
        return Found;
      }
    }
    

    Also wenn ich richtig liege, müsste sich doch der gesamte Text der Datei im String "temp" befinden?! Oder liege ich damit schon falsch!? Aber wie komme ich nun an diesen Teilbereich?

    Danke!!



  • Es befindet sich nur die erste Zeile deiner Datei in temp. Um die gesamte Datei einzulesen benötigst du schon eine Schleife.

    while(temp += reader.readLine()) != null)
    

    Gruß Marco



  • Ahh ok!
    Schleife wird eingebaut! Aber ne wirklich Hilfe in Bezug auf mein Prob war es nicht!
    Hättest du / Habt ihr ne Lösung?

    Danke



  • Also hier mal ein quick'n'dirty Code. Viele Dinge sind hier wohl noch nicht berücksichtigt aber es ist ein Durchstoß.

    import java.io.*;
    
    public class ParseCodeForPackage
    {
    	static String temp = null;
    	static String keyWord = "package ";
    
    	public static void main (String args[]) {
    		try { 
    	        FileReader temp_dat = new FileReader("Beispiel.java"); 
    	        BufferedReader temp_in = new BufferedReader(temp_dat); 
    	        int lineNumber=0;
    	        while ((temp=temp_in.readLine()) != null) {
    	        	lineNumber++;
    	        	temp = temp.trim();
    	        	if (temp.startsWith(keyWord)) {
    	        		System.out.println("Package definition found in line "+lineNumber);
    	        		String packageName = temp.substring(keyWord.length(), temp.indexOf(";"));
    	        		System.out.println("Package-Name: "+packageName);
    	        		break;
    	        	}
    	        }
        	} catch (IOException e) {
        		e.printStackTrace ();
        	} 
        	System.out.println("End of execution");
    	}
    }
    


  • Sehr geil!! Herzlichen Dank!!

    Quick and Dirty ist gut!! 😃 und ich soll´s verschönern? 😃 Werd das so einbauen und gut!!

    Danke and nice WE



  • CengizS schrieb:

    Also hier mal ein quick'n'dirty Code. Viele Dinge sind hier wohl noch nicht berücksichtigt aber es ist ein Durchstoß.
    ....
    temp = temp.trim();
    if (temp.startsWith(keyWord)) {
    System.out.println("Package definition found in }
    ....
    [/java]

    Du solltest temp noch in "all lowercase" konvertieren dann ist egal, wie "Package" geschrieben ist.
    (etwas ausführlich:)

    String tempLC = "";
    int posOfKeyword = 0;
    String restString = "";
    int kWLen = keyWord.length();

    tempLC = temp.toLowerCase();
    posOfKeyword = tempLC.indexOf(keyWord);
    restString = temp.substring(posOfKeyword+kWLen).trim();
    // temp benutzen, da nicht in lowercase


Anmelden zum Antworten