Pomoc z programem do usuwania/naprawniania kodu java

0

Witam pisze program który w jakiś podstawowy sposób naprawia kod Java.
Jestem w momencie

  • usuwać na żądanie słowo kluczowe public przed klas publicznych (nie dotyczy klas wewnętrznych)
import java.io.BufferedWriter;
import java.io.File;    
import java.io.FileReader;    
import java.io.FileWriter;
import java.io.IOException;    
import java.io.BufferedReader;


class Start{

	static BufferedReader bufferedReader;

	public static void main( String a[] )    
	{    
		String source = readFile(a[0]);
		int j = 2;
		String s1 = "[no]public";

	while( j < a.length )
	{
        
		try 
		{
			File file = new File(a[1]);
 
			if (!file.exists()) 
			{
				file.createNewFile();
			}
 
			FileWriter fw = new FileWriter(file.getAbsoluteFile());
			BufferedWriter bw = new BufferedWriter(fw);

			bw.write(source.replaceAll("(?:package.*)","")); // Usuwanie pakietu w kazdym przypadku
			

			if( s1.equals(a[j]) )
			{
				j++;
				String temp = a[j];
				System.out.println(temp);
				
				source.replaceFirst("public class\\*[a-zA-Z_0-9]*", "class "+temp )); //[ \t\n\x0B\f\r]			

			}
			
			
			bw.close();
			
 
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	j++;
	}
}

	static String readFile(String fileName) 
	{    

	File file = new File(fileName);    

        char[] buffer = null;    

        try {    
		bufferedReader = new BufferedReader( new FileReader(file));    

                buffer = new char[(int)file.length()];    

                int i = 0;    
                int c = bufferedReader.read();

                while (c != -1) {    
                    buffer[i++] = (char)c;    
                    c = bufferedReader.read();    
                }    

        }
        catch (IOException e) 
        {    
            e.printStackTrace();    
        }    

        return new String(buffer);    
    }    

}    

Sposób uruchomienia programu będzie następujący:
java Start plik_wejsciowy.java plik_wynikowy.java [no]public ClassName

czyli ma zrobić nie publiczna klasę oraz zmienić jego nazwę na "ClassName"

Teraz powiem w czym mam problem i tutaj prosił bym o jakaś pomoc sugestie:

Linika o którą mi się rozchodzi:
source.replaceFirst("public class\[a-zA-Z_0-9]", "class "+temp ));

jak usunąć stara nazwę klasy (oczywiście jej nie znam)
całej liniki nie mogę usunąć bo klasy przecież mogą jeszcze mieć za nazwą: [implements cos] , [interface cos], [extends cos], i chyba [throws cos](tego nie jestem pewien) a tego tez nie wiem jak będzie w pliku wejściowym
próbowałem z tym żeby się zatrzymywał właśnie na tych początkach liter i/e/t ale coś mi nie wychodziło.
Wiecie jak to zrobić? Czy w ogóle da się usunąć nieznane słowo ze środka liniki.

Plik jaki testuje: (ale raczej nie jest potrzebny)

package zadanie1;

public class Porsche extends Automobile {  
 
   protected String color; 

   public String getColor() {  
      return color;  
   } 

   public void setColor(String newColor) {  
      color = newColor;
   }  
}

class Audi implements Jajko
{
	public String getColor() {  
	return color;  
	}
}
0

Jeżeli już dostaniesz się do konkretnej linijki to rozdziel słowa (http://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java), pętlą przeleć po każdym wyrazie i jeden wyraz po class podmień.

0

Zdajesz sobie sprawę, z tego, że nazwa klasy może w pliku źródłowym występować wielokrotnie - nie tylko w wierszu

public class Foo

1 użytkowników online, w tym zalogowanych: 0, gości: 1