none
String aus einer generischen Liste an letztem Zeichen Splitten RRS feed

  • Allgemeine Diskussion

  • Dieser Eintrag ist jetzt eigentlich redundant und bezieht sich auf diesen Thread. Da ich nicht weiß ob ein als gelöster aber aufgehobenr Thread Beachtung findet, verscuhe ich es auf diesem Wege erneut, Hilfe zu finden: Gegeben Sei folgender Code

    string xmlContent = Program.ReadContent2String(lstFilesInFolderXML);

    wobei:

            #region Gebe Dateihnhalt als String zurück
            private static string ReadContent2String(List<string> lstFilesInFolderXML) {
                string content;
                lstFilesInFolderXML = Program.searchXMLFiles();
                // StreamReader erstellen mit Pfad der Datei und dem Encoding des OS
                using(StreamReader sr = new StreamReader(xmlPath + lstFilesInFolderXML[0], Encoding.Default)) {
                    // liest von der aktuellen Position im StreamReader bis zum Ende der Datei ein
                    content = sr.ReadToEnd();
                    sr.Close();
                    return content;
                }
            }
            #endregion

    Jetzt geht es so weiter:

    List<string> contentOfBOD = new List<string>();
    contentOfBOD = Program.splitString(xmlContent, '>', false);

    wobei

      #region splitte String und gebe den Inhalt in einer gnerischen Liste zurück
            private static List<string> splitString(string s, char c, bool after) {
                return Split(s, c, after, StringSplitOptions.RemoveEmptyEntries).ToList();
            }
            public static string[] Split(string content, char trenner, bool after, StringSplitOptions o) {
                string t = "";
                //Spezielle Zeichen in Regex
                if(trenner == '.' || trenner == ',' || trenner == '+' || trenner == '-' || trenner == '*' || trenner == '(' || trenner == ')'
                 || trenner == '[' || trenner == ']' || trenner == '{' || trenner == '}' || trenner == '|' || trenner == '?' || trenner == '\\')
                    t = string.Concat(@"\", trenner);
                else if(trenner == ' ')
                    t = @"\s"; //Leerzeichen
                else
                    t = trenner.ToString(); //Sonstiges Zeichen
                if(o == StringSplitOptions.None)
                    if(after)
                        return Regex.Split(content, string.Concat(@"(?=", t, @")"));
                    else
                        return Regex.Split(content, string.Concat(@"(?<=", t, @")"));
                else {
                    List<string> liste = new List<string>();
                    if(after)
                        liste.AddRange(Regex.Split(content, string.Concat(@"(?=", t, @")")));
                    else
                        liste.AddRange(Regex.Split(content, string.Concat(@"(?<=", t, @")")));
                    liste.Remove("");//Leere Items entfernen
                    return liste.ToArray();
                }
            }
            #endregion

    Das klappt aber bei  dieser BOD nicht

    <ProcessRetailDeliveryReportingPayload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <content id="Content0" xmlns="http://www.starstandards.org/webservices/2005/10/transport">
        <ProcessRetailDeliveryReporting releaseID="5.10.2" systemEnvironmentCode="Test" languageCode="de-DE" xmlns="http://www.starstandard.org/STAR/5">
          <ApplicationArea>
            <Sender>
              <TaskID>D</TaskID>
              <CreatorNameCode>AMS</CreatorNameCode>
              <SenderNameCode>XX</SenderNameCode>
              <DealerNumberID>97005</DealerNumberID>
              <AreaNumber>1</AreaNumber>
              <DealerCountryCode>DEU</DealerCountryCode>
              <LanguageCode>de-DE</LanguageCode>
              <SystemVersion>1.2A</SystemVersion>
              <PartyID>DEM100</PartyID>
            </Sender>
            <CreationDateTime>2020-03-06T16:02:59+01:00</CreationDateTime>
            <BODID>46f10880-d407-4772-ba1a-2009930571c2</BODID>
            <Destination />
          </ApplicationArea>
          <ProcessRetailDeliveryReportingDataArea>
            <Process>
              <ActionCriteria xmlns="http://www.openapplications.org/oagis/9">
                <ActionExpression actionCode="Add">S</ActionExpression>
              </ActionCriteria>
            </Process>
            <RetailDeliveryReporting>
              <RetailDeliveryReportingHeader>
                <DocumentDateTime>2020-03-06T16:02:59+01:00</DocumentDateTime>
                <DocumentIdentificationGroup>
                  <DocumentIdentification>
                    <DocumentID>000079</DocumentID>
                  </DocumentIdentification>
                </DocumentIdentificationGroup>
                <SalesDate>2020-03-06</SalesDate>
                <SaleCategoryString>R</SaleCategoryString>
                <SalesPersonParty>
                  <SpecifiedPerson>
                    <ID schemeID="dmsID">0028</ID>
                  </SpecifiedPerson>
                </SalesPersonParty>
                <BuyerParty>
                  <SpecifiedPerson>
                    <ID schemeID="dmsID">1000096</ID>
                    <GivenName>Gerd</GivenName>
                    <FamilyName>Fröbisch</FamilyName>
                    <Salutation>Herr Dr.</Salutation>
                    <GenderCode>M</GenderCode>
                    <TelephoneCommunication>
                      <ChannelCode>home</ChannelCode>
                      <CompleteNumber>0374314387</CompleteNumber>
                      <UseCode>dealer</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>home</ChannelCode>
                      <CompleteNumber>0374314387</CompleteNumber>
                      <UseCode>corporate</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>work</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>dealer</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>work</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>corporate</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>SMS</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>dealer</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>SMS</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>corporate</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>cell</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>dealer</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <TelephoneCommunication>
                      <ChannelCode>cell</ChannelCode>
                      <CompleteNumber>0</CompleteNumber>
                      <UseCode>corporate</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </TelephoneCommunication>
                    <URICommunication>
                      <URIID>gerd.duddy@gmx.net</URIID>
                      <ChannelCode>email1</ChannelCode>
                      <UseCode>dealer</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </URICommunication>
                    <URICommunication>
                      <URIID>gerd.duddy@gmx.net</URIID>
                      <ChannelCode>email1</ChannelCode>
                      <UseCode>corporate</UseCode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                    </URICommunication>
                    <LanguageCode>de-DE</LanguageCode>
                    <PostalAddress>
                      <LineOne>Schönbrunn 9</LineOne>
                      <CityName>Zeulenroda-Triebes</CityName>
                      <CountryID>DEU</CountryID>
                      <Postcode>07937</Postcode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                      <UseCode>dealer</UseCode>
                    </PostalAddress>
                    <PostalAddress>
                      <LineOne>Schönbrunn 9</LineOne>
                      <CityName>Zeulenroda-Triebes</CityName>
                      <CountryID>DEU</CountryID>
                      <Postcode>07937</Postcode>
                      <Privacy>
                        <PrivacyTypeString>yes</PrivacyTypeString>
                      </Privacy>
                      <UseCode>corporate</UseCode>
                    </PostalAddress>
                  </SpecifiedPerson>
                </BuyerParty>
                <SoldFinance>
                  <Financing>
                    <FinanceTypeString>Kredit</FinanceTypeString>
                  </Financing>
                </SoldFinance>
              </RetailDeliveryReportingHeader>
              <RetailDeliveryReportingVehicleLineItem>
                <Vehicle>
                  <VehicleNote>eig. Gebrauchtfzg.</VehicleNote>
                  <VehicleID>WF06XXGCC6GR72304</VehicleID>
                </Vehicle>
                <DeliveryDistanceMeasure unitCode="kilometer">1000</DeliveryDistanceMeasure>
                <SaleTypeDescription>GW-Agentur</SaleTypeDescription>
              </RetailDeliveryReportingVehicleLineItem>
            </RetailDeliveryReporting>
          </ProcessRetailDeliveryReportingDataArea>
        </ProcessRetailDeliveryReporting>
      </content>
    </ProcessRetailDeliveryReportingPayload>

    Ich weiß, das ist relativ viel Code, aber ich weiß mir einfach nicht mehr zu helfen. Ich bräuchte etwas wie

    meinString.Split(meinString.Length);

    genau so etwas bietet mir das .NET Framework aber leider nicht. Weiß jemand Rat??




    Montag, 9. März 2020 11:45

Alle Antworten

  • Hi,

    was genau soll nachher in der List<String> stehen? Bitte anhand deiner obigen Beispieldaten die ersten 10 Elemente (exakter Inhalt!) deiner Liste posten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 9. März 2020 13:51
    Moderator