14.05.2013, 09:11
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2013 09:15 von TSC.)
Beitrag #1
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
String (XML) zerlegen
Moin moin,
ich verwende die Funktion "In String suchen" um aus einem String einige Daten zu extrahieren.
String:
p0="false" p1="33.3"
FormatString:
p0="%s" p1="%.;%f"
Gewünschte Daten:
BOOLEAN p0=false
DOUBLE p1=33,3
Leider liest LabVIEW das Anführungszeichen hinter %s mit ein und ich erhalte:
BOOLEAN p0=false"
Danach passt der Rest natürlich nicht mehr und ein DOUBLE-Wert wird nicht gefunden. Wenn ich aus dem FormatString das Anführungszeichen entferne klappt es, allerdings ist das Anführungszeichen dann im Ergebnis vorhanden.
String:
p0="false" p1="33.3"
FormatString:
p0="%s p1="%.;%f"
Daten:
BOOLEAN p0=false"
DOUBLE p1=33,3
Kann mir jemand einen Tipp geben? Die Alternative mit "Muster Suchen/Match Pattern" ist unschön, da im String zu viele Daten liegen!
Kleines Beispiel (sind natürlich viel mehr Daten im echten Projekt):
ExtractData.vi (Größe: 6,95 KB / Downloads: 213)
Danke und Grüße,
Totti
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
14.05.2013, 09:30
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2013 09:32 von GerdW.)
Beitrag #2
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: String (XML) zerlegen
Hallo Totti,
so geht's:
Du musst bedenken:
-"%s" kann bei "false" nur den String false" (mit Anführungszeichen) liefern (Strings werden an Whitespaces getrennt!) und ScanFromString meldet dann einen Fehler aufgrund des dann fehlenden Anführungszeichens im Suchstring...
- Ich bin mir grade nicht sicher, ob "false" (ohne Anführungszeichen) als boolscher Wert erkannt wird. Auf jeden Fall müsstest du aber als Formatcode das %b verwenden und eine boolsche Konstante als Default für ScanFromString vorgeben. Die Kontexthilfe jedenfalls zeigt diese Möglichkeit nicht auf...
|
|
|
14.05.2013, 09:45
Beitrag #3
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
RE: String (XML) zerlegen
Heißt also, wenn mein String keine Leerzeichen enthält, habe ich keine Chance?
Es gibt beim %s noch das Argument der Länge (%ns, liest n Zeichen), aber bei TRUE und FALSE ist das eben auch doof.
Hatte schon überlegt, im String einfach TRUE durch 1 und FALSE durch 0 zu ersetzen. Aber was mache ich, wenn ein Argument dann TRUEmmerhaufen heißt? Dann passt mein Formatstring wieder nicht. Werde als das Anführungszeichen mit lesen.
Danke für die Hilfe,
Totti
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
14.05.2013, 09:48
Beitrag #4
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: String (XML) zerlegen
Hallo Totti,
dann ersetze doch "true" durch 1 und "false" durch 0: bei den Strings jeweils mit Anführungszeichen, die Zahlen ohne.
Jetzt hast du nur Probleme, wenn du gemischt Lower/UpperCase-Strings bekommst...
|
|
|
14.05.2013, 09:53
Beitrag #5
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
RE: String (XML) zerlegen
Gute Idee! Meine man könnte beim Suchen und ersetzen auch "case-sensitive" deaktivieren! Schaue ich mir mal an! Danke!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
14.05.2013, 10:36
(Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2013 10:54 von Lucki.)
Beitrag #6
|
|
|
14.05.2013, 12:43
Beitrag #7
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
RE: String (XML) zerlegen
:-) Auch nett! Habe mich aber dazu entschieden, sowohl FormatString als auch InputString zu manipulieren. Aus "fAlSe" wird "0" und aus "TrUe" wird "1"!
Als nächstes versuche ich mich mal an einer echten XML-Interpretation!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
14.05.2013, 13:18
(Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2015 10:36 von Lucki.)
Beitrag #8
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: String (XML) zerlegen
(14.05.2013 12:43 )TSchAC schrieb: sowohl FormatString als auch InputString zu manipulieren. Aus "fAlSe" wird "0" und aus "TrUe" wird "1"!
Das ist allerdings so einfach, dass man annehmen musste, du wärest da von Anfang von selbst darauf gekommen und hast die Frage nur gestellt, weil eben diese Änderung des Eingangsstrings nicht in Deinem Ermessen steht. Deshalb hatte ich von Gerd die "richtige" Antwort in dieser Richtung auch nicht ernst genommen. Aber mit dem menschlichen Gehirn ist es eben so eine Sache, keiner weiß richtig wie es in einem anderen tickt..
|
|
|
14.05.2013, 14:09
Beitrag #9
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
RE: String (XML) zerlegen
Hatte gehofft, dass man sowas wie %/";s angeben kann! Quasi einen String der nicht mit Leerzeichen sondern vorm nächsten Anführungszeichen endet!
Und ich hatte den Knoten im Kopf, dass ich den FormatString nicht manipulieren kann! Daher die bedenken, dass das Ganze schief geht, wenn ich unbeabsichtigt einen "Truemmerhaufen" in ein "1mmerhaufen" verwandel!
Die ErrorMethode ist übrigens auch nicht mehr sooo schön, wenn der Eingangsstring länger wird!
Nungut, ich übe mal XML! Da ist LabVIEW ja auch irgendwie eigen, bzw. meine Wünsche und Vorstellungen sind anders als LabVIEW.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
14.05.2013, 14:22
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: String (XML) zerlegen
LabVIEW hat doch inzwischen einen vollständigen XML-Parser an Bord:
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
| |