for-Schleife Bedingung ?! :)

Neral

Mitglied
Hi, ich wieder.

Also,soweit klappt ja alles bei mir, nur irgendwie haenge ich gerade bei einer for-Schleife.

Sagen wir mal der String "eingabecode" ist =

"dSI(0001);dSI(0001);dSI(0001);"

-> Ergebnis = dSI(0001dSI(0001
soweit OK.


Wenn ich nun aber als Eingabe nur
"dSI(0001);dSI(0001);" eingebe, meckert er:
Der Index liegt außerhalb des gültigen Bereichs. Der Index darf keine negative Zahl und muss kleiner als die Auflistungsgröße sein. Parametername: startIndex

endPos = eingabecode.IndexOf(suchebis,startPos);

Ok das liegt dann wohl an der Endbedingung der for-Schleife.





Nun meine Frage:

Wenn ich als Eingabe eine nicht bestimmte Anzahl von "Paaren" bekommen, also
Eingabe:

"....asdasd....asdasd....dSI(0001);....dSI(0002);..asd...dSI(0008);.....sdasd..2132..."

Nun moechte ich die dSI(0001 rausfiltern, dabei ist egal ob ");" und/oder "dSI(" abgeschnitten ist.

Wie muss die Endbedingung in der for-Schleife lauten damit der ganze Text durchlaufen wird


Hier die Methode:

PHP:
private string filtern()
		{
						
			string eingabecode = TextBox1.Text;
			TextBox1.Text = "";
			ArrayList artikel = new ArrayList();

			//Such Strings von bis
			string suchevon = "dSI(";
			string suchebis = ");";
			
			//Position ermitteln
			int startPos = eingabecode.IndexOf(suchevon,0);
			int endPos = eingabecode.IndexOf(suchebis,startPos);
			
			for(int i = 0; i < 2;i++)
			{
				if(startPos>-1 && endPos>-1)
				{
					artikel.Add( eingabecode.Substring( startPos, (endPos-startPos))  );
							
				}
				else return "FEHLER";
				startPos = eingabecode.IndexOf(suchevon,endPos);
				endPos =  eingabecode.IndexOf(suchebis,startPos);
			}
.
.
.

}

Gruss
 
Hallo

Ich habe das Problem so gelöst:

Code:
		public void filtern()
		{
			string eingabe = "....asdasd....asdasd....dSI(0001);....dSI(0002);..asd...dSI(0008);.....sdasd..2132...";
			string fertig = null;
			bool schreiben = false;

			for(int x = 0; x < eingabe.Length; x++)
			{
				if(Convert.ToString(eingabe[x]) == "(")
				{
					schreiben = true;
				}
				else
					if(Convert.ToString(eingabe[x]) == ";")
				{
					schreiben = false;
				}

				if(schreiben == true)
				{
					fertig += eingabe[x];
				}
			}
		}

Das ergebniss ist dann: "(0001)(0002)(0008)"

Ich hoffe es hat dir geholfen!

mfg
 
wow super

Danke ist echt viel besser geloest als ich das hatte.

gruss neral

----EDIT----

Hi aehm was genau macht das [x] hinter der eingabe ?! also erstellst du ein array oder wandelst du die in chars um ?

und nochwas mit der loesung kann ich dann doch nur nach einem element suchen also nicht nach zB "dSI(" und dann nach ");" sonst muesste man die if anweisungen schachteln oder ?
 
Zuletzt bearbeitet:
Mit den [x] gehe ich den string Element für Element durch, und prüfe, ab wann er dieeinzelnen Elemente wieder zu den string namens "fertig" hinzufügen kann. Du kanst da auch nur die Zahlen rausfiltern und das ganze dan einfach in ein Array schreiben.

Erkläre mir mal wie genau das Ergebniss aussehen müsste.
Vielleicht kann ich dir dan genauer helfen.
 
Zuletzt bearbeitet:
Zurück