2016-05-04 3 views
0

Ich bin ziemlich neu zu Klassen in Java, also dachte ich nur, ich würde versuchen, eine einfache Regex-Klasse zu schreiben. Und ich habe versagt.Schreiben einer einfachen Regex-Klasse gibt nur leere Ergebnisse

Hier ist die Klasse

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

public class HRM_SwallowTableExtractor { 
    String x; 
    String pattern; 
    ArrayList<String> myArray = new ArrayList<String>(); 

    public HRM_SwallowTableExtractor(String x,String pattern) { 
     x=this.x; 
     pattern=this.pattern; 
    } 

    public ArrayList<String> SwallwTabExtract(String x,String pattern) { 
     Pattern pat = Pattern.compile(pattern); 
     Matcher matcher_pattern = pat.matcher(x); 

     while (matcher_pattern.find()) { 
      String p=matcher_pattern.group(1).trim(); 
      String [] arr=p.split("\\s"); 
      for (int i=0;i<arr.length;i++){ 
       myArray.add(arr[i]); 
      } 
     } 
     return myArray; 
    } 
} 

und hier in der Hauptklasse:

String UESRecovTime_pattern="(UES_recovery_time_\\(msec\\).*)"; 
HRM_SwallowTableExtractor swallTabExtract=new HRM_SwallowTableExtractor(stuff,UESRecovTime_pattern); 

Allerdings, wenn ich dies laufe ich nur ein leeres Array zurückgegeben. Ich denke, das Problem ist, dass das Muster nicht gefunden wird (ja, es ist im Textkörper). Ich denke, das hat etwas damit zu tun, wie der Haupttext in die instanziierte Klasse gebracht wird (als String x) oder wie das Pattern instanziiert wird. Ich weiß nicht, wie ich das herausfinden soll. Ich habe den Text nicht geschrieben, den ich benutze, aber glücklich, wenn es gebraucht wird.

Antwort

2

Sie erhalten ein leeres Array, weil Sie vielleicht die lokalen Variablen und Instanz Variablen falsch verstanden haben, oder Sie haben gerade einen Inversionsfehler gemacht;

public HRM_SwallowTableExtractor(String x,String pattern) { 
    //x=this.x; //this should be invert 
    this.x = x; //you should try this 
    pattern=this.pattern; 
} 
Verwandte Themen