2017-07-07 3 views
0

Ich bin neu zu groovy Programmierung und ich versuche, groovy verwenden, um Telefonnummern, die zufällig in einer Textdatei vorhanden sind, und dann diese Werte in einer Arraylist zu speichern abrufen in meinem groovigen Programm. Ein Beispiel dafür, was die Textdatei aussieht, ist dies:Wie bestimmte Dateielemente mit groovy und speichern Elemente als Arraylist

Codezeile Hallo wie geht es Ihnen 111-111-1111 Katze Hund Hund Katze 999-999-9999 Eine andere Zeile Code 777-777-7777

der Ausgang ich bin zu Anzeige versuchen: 111-111-1111 999-999-9999 777-777-7777

ich weiß, wie die Datei verweisen und alle Codezeilen und spezifischer abrufen Zahlen/Wörter/etc., aber ich bin mir nicht sicher über die groovige Art, nur die vorhandenen Telefonnummern abzurufen n die Textdatei

+0

http://docs.groovy-lang.org/latest/html/groovy-jdk/java/lang/CharSequence.html#findAll(java.util.regex.Pattern) –

+0

uns Zeigen Sie, was Sie versucht haben, bisher. Dies ist kein "Sie fallen Anforderungen und wir fallen Code" -Service. – GhostCat

Antwort

0

Der einfachste Weg, um ein Element zu einer Liste hinzuzufügen, ist += Operator.

Unten finden Sie ein Beispielprogramm, das Telefonnummern aus jeder Quellzeile einer mehrzeiligen Zeichenfolge extrahiert, sie in einer Liste sammelt, und die Liste druckt.

def src = '''\ 
Line of code Hello how are you 111-111-1111 Cat dog dog cat 999-999-9999. 
I'm fine and how are you 111-111-2222 Cat dog dog cat 999-999-8888. 
No phone number here. 
Another line of code 777-777-8888\ 
''' 
def pat = ~/\b\d{3}-\d{3}-\d{4}\b/ 
def phones = [] 
def cnt = 0 
src.eachLine{ 
    def matcher = (it =~ pat) 
    def mCnt = matcher.getCount() 
    printf("Row %d: %s/%d phones.\n", ++cnt, it, mCnt) 
    for (i = 0; i < mCnt; ++i) { 
    phones += matcher[i] 
    } 
} 
printf("%d phones: %s.\n", phones.size(), phones.join(', ')) 
+0

Danke das war hilfreich! – Rae