Parameter parsen?

Status
Nicht offen für weitere Antworten.
D

Diggg

Gast
Hi, gibt es evt. schon einen vorgefertigten Regulären ausdruck, der mir folgenden String parst:


param=1,param=2,param3="hallo,das ist ein string mit komma"

Wichtig wäre hierfür param3
 

0x7F800000

Top Contributor
Ich hab mal was von StringTokenizer gehört, da kannst du deine kommata als trennzeichen einstellen, aber hier bring es dich nicht so wirklich weiter...
Woher erhälst du diese formattierte zeile? Wäre es vielleicht möglich, kommata durch irgendetwas anderes zu ersetzen, was sonst nirgendwo vorkommt? :bahnhof:
 
D

Diggg

Gast
Im Prinzip kommt es aus einem von mir generiertem Parameter-String. Nur will ich gerne als parameter auch ein kommata zulassen.

generell suchst du aber
string.split(",");
benutze ich zur Zeit.
 

Verjigorm

Top Contributor
ja und wo ist nun das Problem?

kriegstes nun nicht hin den split nochmal nach "=" zu spliten?
ich versteh das problem nicht ganz :)
 
D

Diggg

Gast
Das Problem ist, wenn ich das so machn würde, blind nach =, splitte und in einem parameter als value steht genau solch ein zeichnen drinne wird mit der wert aufgesplittet...ist ja nicht sinn der sache.

zb. nochmal!!

param=1,param=2,param3="hallo,das ist ein string mit komma und string = !! ",param4=123

splitte ich nach komma (,) dann erhalte ich bei param3 ein wert von "hallo -> ist ja falsch. splitte ich nach Gleich (=) erhalte ich bei parameter3 ebenfalls einen fehler
 

0x7F800000

Top Contributor
Ja, meine güte :bae: , wenn es nur diese zwei arten von parametern (also zahlen und strings) geben soll, dann schreib dir doch schnell eine eigene parser-funktion, die zusätzlich die anführungszeichen mitzählt, und aufpasst, dass du keine strings in stücke zerfetzst... schwierig wirds dann aber wieder, wenn du in deinen string parameter konstruktionen wie

param3=" Und hier ist ein string mit einem tollen Zitat: "blah" " (na gut, das ist jetzt wohl ein wenig übertrieben)

einbaust...

Ich würd mal sagen, dass du für diesen fall nichts "vorgefertigteres" finden kannst, dafür ist dein problem zu speziell.
 

schalentier

Gesperrter Benutzer
Code:
Pattern param = Pattern.compile("([A-Za-z0-9]+?)=([0-9]+|\\\".+\\\")");

String s = "param=1,param=2,param3=\"hallo,das ist ein string mit komma und string = !! \",param4=123 ";

Matcher m = param.matcher(s);
while( m.find() ) {
   System.out.println(m.group(1)+" = "+m.group(2) );
}

Ausgabe:

Code:
param = 1
param = 2
param3 = "hallo,das ist ein string mit komma und string = !! "
param4 = 123
 
G

Gast

Gast
hi, erstmal danke für die Mühe. funktioniert aber immernoch nicht. Problem ist wenn ich nochmal anführungszeichen habe, klappt das nicht.


param="1 lala",param=2,param3="hallo,das ist ein string mit komma"
 

schalentier

Gesperrter Benutzer
Probiers ma damit:

Code:
Pattern param = Pattern.compile("([A-Za-z0-9]+?)=([0-9]+|\\\".+?\\\")");
 
J

JayJay

Gast
hi, besten Dank. Hab das etwas ausgebaut. funktioniert jetzt perfekt.
Code:
Pattern p = Pattern.compile("([A-Za-z0-9]+?)=([a-zA-Z0-9]+|\\\".+?\\\"|)");

was noch nicht geht wäre ein " zb. in "hier mein text"
 

schalentier

Gesperrter Benutzer
Naja, was ueberhaupt nicht geht ist sowas (irgendwie logisch):
Code:
p1="BliBla"Blub"

Du musst also irgendwie die '"' innerhalb eines Strings mit einem anderen Zeichen "escapen", zb:
Code:
p1="BliBla\"Blub", p2="Foo""Bar"""

Dafuer waere eine Trivalloesung, die speziellen '"'-Zeichen durch "'" zu ersetzen. Z.B:
Code:
s = s.replace( "\\\"", "'");
s = s.replace( "\"\"". "'");
 
J

JayJay

Gast
Endgültige Lösung:
funktioniert auch mit " innerhalb eines Wertes mit".."
Code:
public class Param{
	public String key = new String();
	public String value = new String();
}


	public static Pattern patternParamParse = Pattern.compile("([A-Za-z0-9_-|.]+?)\\s*=\\s*([a-zA-Z0-9_-|.]+|\\\".+?\\\")\\s*,");
	public static Param[] interpretParams( String param_list )
	{
		param_list = param_list.trim();
		if( param_list.length() > 0 && param_list.charAt(param_list.length()-1) != ','){
			param_list += ',';
		}
		
		ArrayList list = new ArrayList(); 
		Matcher m = Stream.patternParamParse.matcher(param_list);
		int start_pos=0;
		while( m.find() ){
			Param param = new Param();
			param.key = m.group(1);
			//param.key = m.group(2).replaceAll( "\" ");
			
			String value = new String(m.group(2));
			if( value.length() > 0 ){
				if( value.charAt(0) == '\"' )
					value = value.substring( 1, value.length() );
				if( value.charAt(value.length()-1) == '\"' )
					value = value.substring( 0, value.length()-1 );
			}
			param.value = value;
			list.add(param);
			//System.out.println("NEW: "+m.group(1)+" = "+m.group(2) ); 
		}
		Param[] p_out = new Param[list.size()];
		for( int i=0; i < p_out.length; i++ ){
			p_out[i] = ((Param)list.get(i));
		}
 
J

Jayjay

Gast
Code:
		return p_out;
	}

sry. das hast noch gefehlt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
B JAX - RS.... Multiple parameter application/x-www-form-urlencoded.... Allgemeine Java-Themen 6
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F URI mit Parameter klappt nicht Allgemeine Java-Themen 1
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
MiMa If-Abfrage mit Parameter Allgemeine Java-Themen 8
I Javaaufruf aus Batch inkl. Parameter (Adminrechte) Allgemeine Java-Themen 2
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
K Java FX Zu startenden FXML-Controller per Parameter wählen Allgemeine Java-Themen 2
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
T Klassen Parameter weitergabe Allgemeine Java-Themen 1
C Überschreiben mit kontravariante Parameter Allgemeine Java-Themen 13
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
Neumi5694 Vererbung Parameter muss 2 Bedingungen erfüllen Allgemeine Java-Themen 2
Sogomn Methode als Parameter? Allgemeine Java-Themen 3
T Parameter Allgemeine Java-Themen 6
R Parameter Adapter - Design Allgemeine Java-Themen 1
I Methode verallgemeinern (Methode als Parameter)? Allgemeine Java-Themen 10
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
H Generics als Parameter Allgemeine Java-Themen 1
N [stream-api] Parameter pro Typ zählen Allgemeine Java-Themen 1
OnDemand Maximale Parameter Allgemeine Java-Themen 5
M final vor dem parameter eines Konstruktors Allgemeine Java-Themen 1
S Servlet, per URLConnection Mit String Http Parameter mitsenden Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
H JasperReport: Parameter befüllen Allgemeine Java-Themen 7
Joew0815 JList + JTableModel: Parameter der Tabelle übergeben Allgemeine Java-Themen 10
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
G Polymorphie Funktion als Parameter Allgemeine Java-Themen 8
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
S OOP Designrichtlinie Parameter Prüfung Allgemeine Java-Themen 7
C char und char-Array als parameter übergeben Allgemeine Java-Themen 6
B Array Parameter Problem Allgemeine Java-Themen 3
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S Keytool: mögliche Werte für Parameter Allgemeine Java-Themen 4
H Externes Programm, Parameter Allgemeine Java-Themen 6
C Webservice: XML Parameter übergabe. Allgemeine Java-Themen 7
M Session-Parameter setzen? Allgemeine Java-Themen 10
P VM-Parameter -D... Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
W ScriptEngine + Wie Parameter übergeben bei Fukntion? Allgemeine Java-Themen 2
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
J BlueJ Methode hat zu viele Parameter Allgemeine Java-Themen 6
R VM-Error - BadWindow (invalid Window parameter) Allgemeine Java-Themen 4
J Parameter an Java übergeben Allgemeine Java-Themen 10
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
P VM Parameter und .jar Allgemeine Java-Themen 3
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
J Parameter absichtlich für außen verändern Allgemeine Java-Themen 4
A wie kann man Parameter an ein Task übergeben? Allgemeine Java-Themen 3
Iron Monkey Singleton mit Parameter Allgemeine Java-Themen 14
G setter und getter: Parameter Überprüfung Allgemeine Java-Themen 6
G JVM Parameter Allgemeine Java-Themen 7
G Parameter Bedeutung Allgemeine Java-Themen 4
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
C US_export_policy.jar und local_policy.jar VM Parameter Allgemeine Java-Themen 1
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
G Parameter oder Attribut (wann nehme ich was?) Allgemeine Java-Themen 12
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
N Funktion als Parameter einer anderen Funktion Allgemeine Java-Themen 5
G Typ Parameter & Reflections Allgemeine Java-Themen 4
F mehrere Verzeichnisse als Parameter Allgemeine Java-Themen 15
Y Javadoc - Wie Parameter ansprechen bei Methodenkommentar Allgemeine Java-Themen 2
G Parameter bei mailto Allgemeine Java-Themen 2
C Java Parameter zum starten ohne auf Programmende zu warten Allgemeine Java-Themen 4
V Jar Datei mit Parameter starten Allgemeine Java-Themen 7
P Übergabe- Parameter SQL Map Allgemeine Java-Themen 45
S URL-Parameter auslesen Allgemeine Java-Themen 2
F Parameter vs Argument Allgemeine Java-Themen 4
T xverify-parameter : Workaround zur Laufzeit? Allgemeine Java-Themen 8
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
P command line parameter auswerten Allgemeine Java-Themen 3
M Parameter an main übergeben aber wie? Allgemeine Java-Themen 4
T Parameter an Thread übergeben Allgemeine Java-Themen 8
S synchronisation einer Methode abhängig vom Parameter Allgemeine Java-Themen 10
J Interface als Parameter übergeben Allgemeine Java-Themen 4
L JNI: C-->Java : Methode mit String-Parameter Allgemeine Java-Themen 18
A Weshalb man Parameter auf Gültigkeit prüfen sollte Allgemeine Java-Themen 6
H in JOE die Parameter -xmx256m -xrs hinzufügen Allgemeine Java-Themen 2
K Testen einer Klasse mit File Objekt als Parameter Allgemeine Java-Themen 6
X Default-Werte für Methoden-/Funktions-Parameter Allgemeine Java-Themen 2
M Funktion als Parameter oder andere Möglichkeit Allgemeine Java-Themen 3
R Parameter in einer Methode verändern Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben