StrSplit Frage - Split[4] vs Split[5] Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

StrSplit Frage - Split[4] vs Split[5]

Post by effel » 31 Jul 2020, 19:42

hallo,
ich brauche die letzen ziffern bis zum `-`
0-2095596783399179318-2008010513-113
hier also die 113

das funktioniert mit meinem Code nicht zuverlässig, weil es auch vorkommt, das zwei -- im VAR sind.

0--5959332142465071043-2008010215-4

Code: Select all

	GetLines := StrSplit(xTripIDArray, "`n")
	for key, Line in GetLines
	{
		if (Line != "")
		{
			Split := StrSplit(Line, "-")
			Datam .= Line "`;" Split[4] "`n" ;Split[2] "-" Split[3] "-" Split[4] "-" Split[5] "-" Split[6] "`n"
		}
	}

	MsgBox % Datam
0--8004794875836149964-2008010040-240
0--5959332142465071043-2008010215-4
0-4995247474315842315-2008010143-9
0-6517037856895082922-2008010232-3
0--5447834572714411053-2008010202-10
0--6064632862567607571-2008010203-12
0-6086433097284689991-2008010223-8
0--7714070494578751951-2008010124-29
0-781133238817971742-2007312107-17
0-6425349569428986153-2008010237-7
0--2213583290257987457-2008010315-4
0-89760254519813932-2008010315-4
0-6825745083760764338-2008010230-19
0-1865874441512377904-2008010237-17
0-7846916966845199529-2008010323-8
0--7577129744864055718-2008010317-11
0-4198419582251120624-2008010337-7
0-6342851662873035729-2008010245-13
0--4805755031444986789-2008010415-4
0-2594163094609916442-2008010415-4
0-6470818783695427594-2008010432-3
0--403043953809620366-2008010330-19
0-8374153004878982949-2008010336-17
0--7388360128176242352-2008010423-8
0-5988349202784296674-2008010417-11
0--6158993893886785846-2008010454-3
0-3081171686114087421-2008010502-3
0--5592911721358731775-2008010508-2
0-3964748219464619772-2008010316-14
0--8867419551013713181-2008010513-2
0--5325416879309782298-2008010515-4
0-1167712395203708801-2008010515-4
0-7037501765563242396-2008010420-20
0--7559051505666812137-2008010528-2
0-4070369663547032380-2008010502-6
0--6087280556319555592-2008010532-2
0--1474618953283433017-2008010532-3
0-3566345889952071292-2008010429-12
0--2422155161388686579-2008010456-10
0-6262572822479047739-2008010513-8
0-3277109751074491019-2008010503-12
0--4635360925860842437-2008010523-8
0-5270799049340630662-2008010438-24
0--3950964779211593390-2008010545-4
0--1342736291342911674-2008010454-14
0-6502553082132514700-2008010534-3
0-7621052122682995020-2008010450-20
0--8075694292789191839-2008010554-3
0-2095596783399179318-2008010513-13
0--3364959139256874354-2008010602-3

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: StrSplit Frage - Split[4] vs Split[5]  Topic is solved

Post by BoBo » 01 Aug 2020, 00:48

:crazy: xTripIDArray := StrReplace(xTripIDArray,"--","-")
Da du das letzte item einer zeile suchst, sollte auch dies gehen: Split[Split.Length()].
Und wenn nicht gleich einer mit RegEx um die Ecke kommt, fress ich (k)einen Besen :mrgreen:

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Re: StrSplit Frage - Split[4] vs Split[5]

Post by effel » 01 Aug 2020, 01:14

danke bobo,
Split[Split.Length()] war das Zauberwort


Code: Select all

	GetLines := StrSplit("0-2095596783399179318-2008010513-113", "`n")
	for key, Line in GetLines
	{
		if (Line != "")
		{
			Split := StrSplit(Line, "-")
			Datam .= Line "`;" Split[Split.Length()] "`n"
		}
	}

	MsgBox % Datam
0-2095596783399179318-2008010513-113;113

just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: StrSplit Frage - Split[4] vs Split[5]

Post by just me » 01 Aug 2020, 03:56

Moin!

Der Teilstring hinter dem letzten Bindestrich (-) mit InStr()/SubStr():

Code: Select all

#NoEnv
xTripIDArray := "
(
0--8004794875836149964-2008010040-240
0--5959332142465071043-2008010215-4
0-4995247474315842315-2008010143-9
0-6517037856895082922-2008010232-3
)"

GetLines := StrSplit(xTripIDArray, "`n")
Datam := ""
For Each, Line In GetLines
   If (P := InStr(Line, "-", 0, 0))
     Datam .= Line . ";" . SubStr(Line, P + 1) . "`n"

MsgBox, %Datam%

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Re: StrSplit Frage - Split[4] vs Split[5]

Post by effel » 02 Aug 2020, 00:18

danke damit komme ich mal gut weiter

Grade hänge ich an if BIDe[BIDf[A_Index]] = false

Wenn ich das mit einer msgbox abfrage MsgBox % BIDe[BIDf[A_Index]] erhalte ich true & false
aber mit if habe ich keinen Erfolg

just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: StrSplit Frage - Split[4] vs Split[5]

Post by just me » 02 Aug 2020, 04:33

Wenn ich das mit einer msgbox abfrage MsgBox % BIDe[BIDf[A_Index]] erhalte ich true & false
Meinst Du, die Texte true bzw. false werden ausgegeben?

effel
Posts: 544
Joined: 16 Jan 2018, 13:34

Re: StrSplit Frage - Split[4] vs Split[5]

Post by effel » 02 Aug 2020, 10:21

die ausgabe ist true oder false, die Texte werden ausgegeben. Das habe ich mit BahnhofsArray[Line] := "True" etabliert.

EDIT:
in dem Moment wo ich obiges gepostet habe, merkte ich das hier ein Fehler drin ist.
BahnhofsArray[Line] := True ist richtig. Das hat aber nur zur Folge, das meine Benachrichtigungen nicht mehr True oder False, sondern null und eins heißen.

Mein if Problem bleibt hiervon unberührt. Bei den folgenden Zeilen funktioniert mein code nur mit der contains Zeile

Code: Select all

if BIDe[A_Index] := True
if BIDe[A_Index] := false
if x contains --
EDIT2:

nachdem ich BahnhofsArray[Line] := True geändert habe, verliefen meine if Tests gut. Problem gelöst

Code: Select all

If InStr(BIDe[x], 1)
If InStr(BIDe[BIDf[A_Index]], 1)
if BIDe[BIDf[A_Index]] = True
if BIDe[BIDf[A_Index]] = 1
if x contains --

Post Reply

Return to “Ich brauche Hilfe”