2016-04-29 2 views
2

ich ein PL/SQL-Code aus einer Textdatei lese und Speicherung aller Worte es in Array-Liste von unten Code:Wie Speichern von Text verhindern zwischen Sonderzeichen kommen/* und */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 Frage bin vor, sobald ein Kommentarfeld in Code * zwischen Sonderzeichen/geschrieben und */Wie unter:.

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

Wie ich so meinen Code ändern kann, dass Es speichert nicht, was dazwischen kommt/* und */

+0

Es ist wie das klingt noch nichts mit Arraylist zu tun hat ... das wird nur gespeichert, was Sie hinzufügen . Ich bin mir nicht sicher, ob die Verwendung von Scanner Ihnen genug Power geben wird, hier ... –

Antwort

2

einfach eine alternative Trennzeichen hinzufügen - mehrzeilige Kommentare.

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

anzeigen IDEONE demo:

String s = "Some text. More, more text. /* \n|| This is a comments section in pl/sql code...||\n|| Which i don't want to store..    ||\n*/ SOME HERE"; 
Scanner in1 = new Scanner(s); 
ArrayList<String> Code1 = new ArrayList<String>(); 
in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|[\\p{javaWhitespace}.,]+"); 
while (in1.hasNext()) { 
    System.out.println(in1.next().toLowerCase()); 
} 

Ergebnisse:

some 
text 
more 
more 
text 
+0

Perfekt :) Danke, die Verwendung als Trennzeichen ignoriert den Kommentarbereich, aber ich lande in einem weiteren Problem diesbezüglich. Unten ist der Kommentarbereich in der Datei/* Anwendung ist "in Bearbeitung" */ – Rahul

+0

Wenn ich "in Prozess" entfernen seine Arbeit – Rahul

+0

Aber nicht, wenn "in Prozess" ist da, im Grunde, wenn ich doppelte Anführungszeichen aus dem Wort in Kommentar entfernen funktioniert gut, aber nicht, wenn ich so wie es ist. – Rahul

1

Dies kann durch Subtringen der Zeichenfolge erfolgen, die in der ArrayList gespeichert werden soll. Suchen Sie einfach nach den Sonderzeichen innerhalb Ihrer Strings und wenn sie existieren, müssen Sie sie nur entfernen. Von/* bis */

dies ist die Methode, die Sie das unerwünschte Stück verwenden können public String substring(int beginIndex, int endIndex)

, wenn der String diese Sonderzeichen bekam zu überprüfen, um zu schneiden, können Sie die Spiele Methode verwenden. Verwenden Sie einfach einen regulären Ausdruck

Sie alles, was Sie brauchen, hier finde können: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html