Text innerhalb Anführungsstriche als "eins" auswerten

MR_UNIX

Bekanntes Mitglied
Moin,

ich sitze gerade vor einem wahrscheinlich relativ einfachen "Problem". Und zwar möchte ich eine Art Kommando aus einer Datei lesen und dieses Kommando besteht einmal aus dem Befehl, dann einem String und dann noch einer Zahl.
In meinem Javaprogramm möchte ich das dann eine Methode übergeben, in etwa so:

Pseudocode
Java:
public void auswerten(String string, int zahl)
{
    // Krimskrams
}

Eine Beispielzeile aus der besagten Datei würde so aussehen:
Code:
kommando "ich bin ein beispiel" 25

Wie kann ich es nun am SCHÖNSTEN (wie es an sich geht weiß ich schon) lösen, dass der Kram in den Anführungszeichen sozusagen am Stück eingelesen wird und dann als ein String an die Methode übergeben werden kann?
Ich hatte zuerst an einen StringTokenizer gedacht, aber der bietet wie ich die JavaDoc verstanden habe nicht wirklich so eine Option.

Danke!
 
Moin,

ich verstehe Deine Frage nicht ..... :noe:

Wenn Du diese Beispielzeile einliest, dann brauchst deoch nur alles zwischen den beiden " in einen neuen String / StringBuilder o.ä. zu schreiben .....

Gruß
Klaus
 
Java:
	@Test
	public void test() {
		String txt = "\"ich bin ein beispiel\"";
		Pattern pattern = Pattern.compile("\"(.*)\"");
		Matcher matcher = pattern.matcher(txt);
		String beispiel = "";
		if (matcher.matches()) {
			beispiel = matcher.group(1);
		}
		assertEquals("ich bin ein beispiel", beispiel);
	}
 
Zuletzt bearbeitet:
Ich fände es mit substring einleuchtender, wobei gegen RegEx nichts auszusetzen ist.

Java:
String txt = "\"das ist \"ein Text\"";
txt = txt.substring(1 + txt.indexOf('"'), txt.lastIndexOf('"'));

PS: Unabhängig davon ist folgende lösung mMn schöner:

Java:
public class Message {
  private String cmd;
  private String data;
  private int number;

  public Message(String msg) {
    cmd = msg.substring(0, msg.indexOf(' '));
    data = //...
    //...
  }

  public String getCmd() //...
  public String getData() //...
  public String getNumber() //...
}

public class XYZ() {
  public void auswerten(Message msg) {
    //... 
 }
}
 
Zuletzt bearbeitet:
Hi,

danke erstmal für die Antworten! Das mit dem Substring was Ruzmanz vorgeschlagen hat ist im Prinzip genau das was ich suche. Wenn jetzt aber das Kommando so aufgebaut ist:

Code:
kommando "text 1 xxxxxxxx" 12 "xxxxxx" 23 33 "asdasdasd"

Also in Kurzfassung eben mehrere Strings als "Parameter" für das Kommando machbar sind, wie würde man da am besten herangehen? Wären es da dann doch besser wieder reguläre Ausdrücke?
 
Funktionieren beide gleich schlecht. Ich halte beide Lösungen für gleichwertig. Sofern du nicht per Definition ausschließt, dass das Zeichen
Code:
"
nicht im Text vorkommen darf, lässt sich das Problem nicht lösen.

Ein Text:
kommando "text 1 xxxxxxxx" 12 "xxxxxx" 23 33 "asdasdasd"

Zwei Texte:
kommando "text 1 xxxxxxxx" 12 "xxxxxx" 23 33 "asdasdasd"

....
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben