String zerlegen!



  • Hallo Community,

    habe einen Textdatei wo ich einzelne Wörter mit einem ";" von einander trenne.

    so: Max;Muster;19years;Frankfurt;

    beim einlesen möchte ich gerne wieder die einzelnen Wörter getrennt einlesen,
    kann ich das automatisieren?

    Bis dann. Danke



  • Hast du die Wörter als Strings oder als char* vorzuliegen?

    Beim String kann man mit
    Teilstring = String.SubString(posAnfang, Länge)
    Teilsstrings auslesen.
    Mit
    int CharPos = String.Pos(TrennZeichen) kannst du die Position deines Trennzeichens herausfinden.
    😉

    Du kannst aber auch gleich beim Einlesen deiner Zeichen ( wenn du alle Zeichen einzeln einliest) Zeichen für Zeichen aneinanderhängen bis zu deinem ";" und dann ein neues Wort erstellen und wieder Zeichen für Zeichen hintenranhängen.





  • schau dir mal

    ExtractStrings
    

    an



  • Hi,

    ich hab mir das mal selbst erstellt und arbeite seit Jahren damit. Wahrscheinlich geht es einfacher und schneller, hab mich aber nie mehr darum gekümmert. Das Flag am Ende gib tan, ob das Trennzeichen hinter dem letzten Eintrag nochmal vorhanden ist oder nicht.

    Separator(lstBehandlung->Items->Strings[y], "|", 2, false)
    
    String Separator(String sSourceText, String sSeparatorChar, int iPosition, bool bEndSeparatorChar)
    {
    	int iAnz = 0;
    	int iPosStart = 0;
    	String sReturn = "";
    
    	if (bEndSeparatorChar == false)
    	{
    	  sSourceText += sSeparatorChar;
    	}
    
    	for (unsigned int i = 0; i < sSourceText.Length() + 1; i++)
    	{
    	  // Trennzeichen gefunden
    	  if (sSourceText.SubString(i,1) == sSeparatorChar)
    	  {
    		 iAnz++;
    		 // Anzahl Trennzeichen = Suchposition
    		 if (iPosition == iAnz)
    		 {
    			// Wenn die erste Position gesucht wird Startposition setzen
    			if (iPosition == 1)
    			{
    				iPosStart = 0;
    			}
    			// Übergabestring auslesen
    			return sSourceText.SubString(iPosStart + 1, i - iPosStart - 1);
    		 }
    		 else
    			{
    				// Tennzeichenposition als neuen Startwert setzen
    			iPosStart = i;
    			}
    		}
    	}
    //   Application->MessageBox("Fehler im Übergabestring", "Fehler", MB_OK);
    	return "Fehler im Übergabestring";
    }
    

    Ernst


Anmelden zum Antworten