# Substring zwischen Anführungszeichen finden



## jeefan (14. Jan 2009)

Hallo,
ich habe einen String, der wie folgt aussieht:
200,5,"Nevada 89418, USA"
200,4,"Sallneck, Germany"

Daraus möchte ich nun immer den String zwischen den Anführungszeichen extrahieren.

Ergebniss:
Nevada 89418, USA
Sallneck, Germany

Wie muss ich das anstellen?


----------



## 0x7F800000 (14. Jan 2009)

mit 'nem regex, etwa so:

```
import java.util.regex.*;

public class TEST {
public static void main(String... _){
	String s="200,5,\"Nevada 89418, USA\"";
	Matcher m=Pattern.compile("[^\"]*\"([^\"]*)\"[^\"]*").matcher(s);
	m.find();
	System.out.println(m.group(1));
}
}
```

für weitere Informationen über regex siehe API, da gibt es einen ganz guten Link soweit ich mich richtig erinnere. Oder einfach nur googln, da sollte auch was vernünftiges rauskommen. Oder villeicht ist das alles ja schon aus dem info-unterricht bekannt...


----------



## AmunRa (14. Jan 2009)

schau dir mal die method split() der String-klasse an 

vielleicht hilft dir die


----------



## 0x7F800000 (14. Jan 2009)

also, prinzipiell, wenn da nur einführungszeichen sind, dann würdest du sogar mit String.indexOf("\"") und substring()  recht schnell zum Ziel kommen, das ist zwar weniger flexibel, erfordert aber im gegensatz zu Regex 0 einarbeitungszeit.


----------



## Ebenius (14. Jan 2009)

Der eine String hat mehrere Zeilen, oder sind's mehrere Strings (je Zeile einer)?

Falls es einer ist (sonst bei Zeile 2 anfangen):
	
	
	
	





```
final String[] lines = input.split("\n");
final List<String> results = new LinkedList<String>();
for (String line : lines) {
  final String match = line.replaceFirst("^[^\"]*\"(.*)\"[^\"]*$", "$1");
  if (!line.equals(match)) {
    results.add(match);
  }
}
```

Sicher nicht optimiert, man kann auch mit _Pattern_ und _Matcher_ arbeiten, aber diese Lösung find ich am einfachsten.

Ebenius


----------



## Ebenius (14. Jan 2009)

Ich bin einfach zu langsam... :-(


----------



## 0x7F800000 (14. Jan 2009)

aber wenn schon zu spät, dann wenigstens zwei posts gleichzeitig, und am besten mit einem kilometerhohen Logo^^


----------



## Ebenius (14. Jan 2009)

Andrey, Dir ist langweilig. Fehlen Dir die Gäste? ;-)


----------



## jeefan (14. Jan 2009)

Ich muss Euch alle in den höchsten Tönnen loben, mit einem so schnellen Ergebniss habe ich nun wirklich nicht gerechnet...


Es ist immer nur eine Linie

und zwar das Ergebniss einer Adressauflösung bei Google:
Bsp.:

http://maps.google.com/maps/geo?output=csv&ll=40.479581,-117.773438

Nochmals Danke


----------



## Ebenius (14. Jan 2009)

jeefan hat gesagt.:
			
		

> mit einem so schnellen Ergebniss habe ich nun wirklich nicht gerechnet...


Ich offensichtlich auch nicht. :lol:

Ebenius

PS: Andrey, ich hab extra die Leerzeilen aus meiner Signatur genommen. Nur für Dich.


----------



## 0x7F800000 (14. Jan 2009)

Ebenius hat gesagt.:
			
		

> Andrey, Dir ist langweilig. Fehlen Dir die Gäste? ;-)


nene, bastle grad was mit einer grünen wiese und roten äpfeln: diese Snake-gui in dem nachbar-thread da... 
und sonst sollte mir eigentlich auch überhaupt nicht langweilig sein, aber ich nutze jeden beliebig schwachen vorwand, um mich von den Hausaufgaben abzulenken :?

Und was die Signatur angeht: :applaus: klasse! jetzt wird sich meine monatliche Rechnung für verschlissene Mausräder wohl glatt halbieren^^


----------

