2016-07-26 5 views
1

Ich habe ein String-Array für Abc\r\n123PQR\r\n456, die ich aus einem Behälter, und ich möchte nur "ABC" und "PQR „mit WebDriver erhalten. Wie es zu bekommen?Wie bestimmte Zeichenfolge von String-Array

ich verwendet habe Split("\r\n") aber seine nur zurückkehr 2 Strings "ABC" und 123PQR\r\n456

Irgendwelche Vorschläge Sprache C# ist WebDriver mit

+2

Können Sie Ihren tatsächlichen Code anzeigen? Split sollte Ihnen 3 Strings basierend auf dem von Ihnen angegebenen Beispiel geben. Spam nicht zusammenhängende Tags (ich sehe nicht, wie dies zu Java gehört) – juharr

+0

Eine Bearbeitung hinzugefügt, um nutzlose Tags loszuwerden. Dies ist nur eine Frage zu C# strings und split. – Jacobr365

+0

Das sieht für mich auch nicht nach einem String-Array aus. – Dispersia

Antwort

0

bearbeiten, nach Testfälle vorgeschlagen:.

 Regex reg = new Regex(@"([A-Za-z].*)", RegexOptions.Singleline); 
     // Split the string on line breaks, removing parts consisted of only numbers 
     // ... The return value from Split is a string array. 
     string[] lines = Regex.Split(Regex.Replace(value, @"(?<=\n)(.[\d]*)(?=\r)|(?<=\n)(.[\d]*)(?=$)|(?<=^)(.[\d]*)(?=\r)", string.Empty), "\r\n"); 
     //Removing empty spaces with Linq 
     lines = lines.Where(x => !string.IsNullOrEmpty(x)).ToArray(); 
     for (int i = 0; i < lines.Count(); i++) 
     { 
      Match m = reg.Match(lines[i]); 
      if (m.Success) 
      { 
       lines[i] = m.Value; 
      } 
      Console.WriteLine(lines[i]); 
     } 
    } 
+0

Danke Forlani. Das hat meine Arbeit wirklich erleichtert. :) –

+0

Ich habe den folgenden Code verwendet und es funktioniert gut, string [] Zeilen = Regex.Split (Regex.Replace (Wert, @ "[\ d]", string.Empty), "\ r \ n"); Aber das eigentliche Problem begann, als ich einige String-Wert haben Zahlen in Namen wie tatsächlichen Namen mit: 4547gaeey \ r \ n12345567mona2p \ r \ n123456lisa123 \ r \ n8764438 Ich möchte eine Ausgabe wie zu bekommen: Erwartete Name: 2947gaeey, mona2p, lisa123 –

+0

hm, ich dachte, du wolltest nur die Namen, wie "gaeey", "mona" und "lisa" in diesem Fall. Ich werde den Code – Forlani

1

Um Wörter in Folge versuchen, diese

string sequence = "Abc\r\n123PQR\r\n456"; 

string[] itemsArray = sequence.Split(new char[] { '\r', '\n' }, 
    StringSplitOptions.RemoveEmptyEntries); 

List<string> itemsList = new List<string>(itemsArray); 

List<string> itemsListFind = itemsList.FindAll(
    delegate(string item) 
    { 
     return 
      item.ToUpper().Contains("ABC") || 
      item.ToUpper().Contains("PQR"); 
    }); 

string[] result = itemsListFind.ToArray(); 

Das Ergebnis ist:

{string[2]} 
    [0]: "Abc" 
    [1]: "123PQR" 

Ist es das?

+1

Sie können Ihre Aufteilung vereinfachen, indem Sie Folgendes tun: Split (new [] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries), da die Zeichenfolge des OP keine \ r oder \ n enthält, die voneinander unabhängig sind. Dies wird angenommen, obwohl sie wirklich nach der Newline suchen. –

Verwandte Themen