
Ergebnis 1 bis 6 von 6
-
Mich gibt's schon länger
- 24.01.2013, 00:38
- #1
Hallo Community, ich schreibe gerade an einer Chemie-App. Und zwar möchte ich die Edukte der Reaktionsgleichung (die Linke Seite einer Reaktionsformel zB. H2SO4 + NaCl
.... ) in dem Fall H2SO4 und NaCl in jeweils dem String [FONT=Consolas]MolekülLeft[/FONT][0] und [FONT=Consolas]MolekülLeft[/FONT][1] haben. Bekomme aber mit dem Pattern nur H2SO4 in MolekülLeft[0]. Kann mir da jemand Helfen? Hier noch ein Bsp. Code:
Code:[FONT=Consolas][FONT=Consolas][FONT=Consolas][FONT=Consolas][FONT=Consolas][FONT=Consolas]Regex[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas] rMolekülLeft = [/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]new[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]Regex[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas]([/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]"(?:([0-9]*((([A-Z]{1})[a-z]*)[0-9]*)*))"[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas]); [/FONT][/FONT] [FONT=Consolas][FONT=Consolas][FONT=Consolas] [/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]MatchCollection[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas] allMatchResultsMolekülLeft = rMolekülLeft.Matches(leftFormulaSide.Text); [/FONT][/FONT] [FONT=Consolas][FONT=Consolas][FONT=Consolas] [/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]string[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][] MolekülLeft = [/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]new[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]string[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas][allMatchResultsMolekülLeft.Count];[/FONT][/FONT] [FONT=Consolas][FONT=Consolas] [/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]for[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas] ([/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]int[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas] i = 0; i < allMatchResultsMolekülLeft.Count; i++) [/FONT][/FONT] [FONT=Consolas][FONT=Consolas] { MolekülLeft[i] = allMatchResultsMolekülLeft[i].Groups[0].Value; [/FONT][/FONT][FONT=Consolas][FONT=Consolas] MoleküleLeft.Text = MolekülLeft[0] + [/FONT][/FONT][FONT=Consolas][FONT=Consolas][FONT=Consolas]" "[/FONT][/FONT][/FONT][FONT=Consolas][FONT=Consolas] + MolekülLeft[1];[/FONT][/FONT] [FONT=Consolas][FONT=Consolas] } [/FONT][/FONT][/FONT][/FONT][/FONT]
-
- 24.01.2013, 07:32
- #2
also der regex stimmt soweit. ganz nützlich ist für so was z.B. rick.measham.
der Hund liegt in deinem for: du gehst nur bis allMatchResultsMolekülLeft.Count-1, weil du i
Code:for (int i = 0; i <= allMatchResultsMolekülLeft.Count; i++)
Code:string[] MolekülLeft = newstring[allMatchResultsMolekülLeft.Count];
mach doch lieberCode:string MolekülLeft;
und: wenn du nur ein Molekül hast, bekommst du mit deinem StringCode:MoleküleLeft.Text = MolekülLeft[0] + " " + MolekülLeft[1];
Code:string strTrenner = " "; MolekülLeft = String.Join(strTrenner, allMatchResultsMolekülLeft);
-
Mich gibt's schon länger
- 24.01.2013, 10:34
- #3
Vielen Dank fur deine Antwort. Bin immer wieder erstaunt wie schnell hier doch, produktive Antworten kommen
Mit der kostenlosen PocketPC.ch App von meinem RM-821_eu_euro2_248 aus geschrieben.
-
Mich gibt's schon länger
- 25.01.2013, 14:51
- #4
Also ich habe jetzt rausgefunden, dass bei der Eingabe von H2O+H2SO4, MolekülLeft[0] "H2O", MolekülLeft[1] " "(also ein Leerzeichen, MolekülLeft[2] H2SO4 und MolekülLeft[3] " " enthält.
jetzt ist meine Frage woher die Leerzeichen kommen?
-
entwickelt Apps
- 25.01.2013, 14:59
- #5
Das wird so nicht funktionieren. Auflistungen werden ab 0 indiziert. Wenn eine Auflistung also 4 Elemente haben werden diese mit 0, 1, 2, 3 indiziert. 4 ist schon außerhalb.
Ich glaube der reguläre Ausdruck ist nicht der den du haben möchtest.
Ich glaube dieser hier tut was du möchtest:
Code:((?<educt>[^\s\+]+)[\s\+]+)+
Code:Regex rMolekülLeft = new Regex(@"((?<educt>[^\s\+]+)[\s\+]+)+"); var allMatchResults = rMolekülLeft.Match(leftFormulaSide.Text).Groups["educt"].Captures.Cast<Capture> ().Select(a => a.Value); MoleküleLeft.Text = string.Join(" + ", allMatchResults);
LG pdelvo
-
- 25.01.2013, 18:18
- #6
oh stimmt, 0indiziert, ganz übersehen.
Ähnliche Themen
-
Hilfe bei HD2_CoreDroid_Desire_HD_GB_V3_RV
Von Fabian Boszczar im Forum HD2 Android Builds NAND-VersionenAntworten: 7Letzter Beitrag: 28.07.2011, 10:57 -
HILFE! Nexus One Warndreieck bei Rom/Radio Instalation HILFE!
Von DonaldDuff im Forum Google Nexus OneAntworten: 1Letzter Beitrag: 07.06.2011, 01:30 -
Brauche hilfe bei dem Uhrzeitdisplay bei htc wildfire
Von jeylin90 im Forum HTC WildfireAntworten: 2Letzter Beitrag: 15.01.2011, 11:04 -
[Hilfe] HTML und Regex
Von Willey1986 im Forum Android EntwicklungAntworten: 6Letzter Beitrag: 05.07.2010, 11:18 -
Hilfe, es fehlt bei mir der "Hintergrund" bei den SMS
Von ohnesinn im Forum HTC HD2 KommunikationAntworten: 4Letzter Beitrag: 14.01.2010, 06:53
Pixel 10 Serie mit Problemen:...