2016-06-04 14 views
0

ich aus einer Textdatei eine PL/SQL-Code lese und alle Worte es in Array-Liste von unten Code zu speichern:Wie Speichern von Text zu verhindern, nachdem Sonderzeichen kommen - in Arraylist in Java

Scanner in1 = new Scanner(file1); 
ArrayList<String> Code1 = new ArrayList<String>(); 
in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|[\\p{javaWhitespace}\\.|,]+"); 
while (in1.hasNext()) 
    { 
    Code1.add(in1.next().toLowerCase()); 
    } 

Alles funktioniert gut, aber ich bin vor Problem, wenn es ein Kommentarfeld in Code ist nach Sonderzeichen geschrieben in - wie unten:

select * from 
Dummy_Table --This is a, dummy.table 
where id = 1 -- Filter.on, id 

Für obigen Code ich mag nicht die Kommentare speichern (- Dies ist eine, dummy.table) und (- Filter.on, id) in meiner Liste. Wie kann ich das tun?

in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|[\\p{javaWhitespace}\\.|,]+"); 

ich oben Begrenzer bin mit Lesekommentarbereich zwischen/* und */eingeschlossen überspringen, die mehrzeilige ist, erklärt, wie unten geschrieben, aber dies einschließlich ich möchte auch das Lesen überspringen/die einzelne Anweisung Kommentare zu speichern, dh nach - bis zum Ende der Linie.

/* 
|| This is a comments section in pl/sql code...|| 
|| Which i don't want to store..    || 
*/ 

Antwort

0

Sie können Teil nach -- bis zum Ende der Zeile in Ihrer Regex wie folgt hinzu:

in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--[^\\n]*|[\\p{javaWhitespace}\\.|,]+"); 

RegEx Demo

+0

Gut idea.Thanks :) Dies könnte funktionieren, lassen Sie es mich einmal – Rahul

+0

überprüfen Dies funktioniert, aber ich bin immer Zeilenumbruch in der Ausgabe, wo es Kommentare, die ich möchte nicht – Rahul

+0

Noch zeigt Zeilenumbruch in Ausgabe – Rahul

0

Für Inline-Kommentare zu entfernen, haben Sie darüber nachgedacht, die einfache Kombination von indexOf() mit und substring()? Sollten Sie auch in1.nextLine() anstelle von in1.next() verwenden? Zum Beispiel:

while (in1.hasNext()) 
{ 
    String line = in1.nextLine(); 
    int indexOfComment = line.indexOf("--"); 
    if (indexOfComment > -1) { 
     line = line.substring(0, indexOfComment); 
    } 
    Code1.add(line.toLowerCase()); 
}