Fragensteller
String aus einer generischen Liste an letztem Zeichen Splitten

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??
- Bearbeitet tklustig Montag, 9. März 2020 11:51 Erweiterung
- Typ geändert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 19. März 2020 11:04 Keine Rückmeldung
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