2017-02-02 2 views
0

Code:String Split String Array ohne seperator

string animals = "cat98dog75"; 

Was ich versuche zu erreichen:

string a = "cat98";

Zeichenfolge b = "dog75";

Frage:

Wie kann ich die Zeichenfolge aufgeteilt etwas Bereich Trennzeichen?

Beispiel:

animals.split(); 
+0

Was ist dein Begrenzer? –

+0

Sie können Teilzeichenfolge verwenden. –

+1

Mögliches Duplikat von [Eine Zeichenfolge in Stücke einer bestimmten Größe aufteilen] (http://stackoverflow.com/questions/1450774/splitting-a-string-into-chunks-of-a-certain-size) – Reniuz

Antwort

4

Ich schlage vor, mit Hilfe von regulären Ausdrücken passende:

using System.Text.RegularExpressions; 
    ... 

    string animals = "cat98dog75"; 

    string[] items = Regex 
    .Matches(animals, "[a-zA-Z]+[0-9]*") 
    .OfType<Match>() 
    .Select(match => match.Value) 
    .ToArray(); 

    string a = items[0]; 
    string b = items[1]; 

    Concole.Write(string.Join(", ", items)); 

Ergebnis:

cat98, dog75 

Falls Sie die geteilt werden soll Anfangsfolge b y gleich große Stücke:

int size = 5; 

    string[] items = Enumerable 
    .Range(0, animals.Length/size + (animals.Length % size > 0 ? 1 : 0)) 
    .Select(index => (index + 1) * size <= animals.Length 
     ? animals.Substring(index * size, size) 
     : animals.Substring(index * size)) 
    .ToArray(); 

    string a = items[0]; 
    string b = items[1]; 
+0

Das was im Suche nach Zeichenketten in gleicher Größe. – Edulo

+0

@Edulo: Das nächste Mal, bitte, genauer gesagt: "Split zu String Array ohne Seperator" kann auf viele verschiedene Arten gelesen werden. –

0

Dies könnte den Trick für Sie tun

string animals = "cat98dog75"; 
string[] DiffAnimals = Regex.Split(animals, "(?<=[0-9]{2})") 
          .Where(s => s != String.Empty) //Just to Remove Empty Entries. 
          .ToArray(); 
0

Wenn Sie den Namen des Tieres und die Nummer teilen möchten, versuchen Sie folgende ..

I wissen, dass es zu lang ist.

private static void SplitChars() 
    { 
     string animals = "cat98dog75"; 
     Dictionary<string, string> dMyobject = new Dictionary<string, string>(); 
     string sType = "",sCount = ""; 
     bool bLastOneWasNum = false; 
     foreach (var item in animals.ToCharArray()) 
     { 

      if (char.IsLetter(item)) 
      { 
       if (bLastOneWasNum) 
       { 
        dMyobject.Add(sType, sCount); 
        sType = ""; sCount = ""; 
        bLastOneWasNum = false; 
       } 
       sType = sType + item; 
      } 
      else if (char.IsNumber(item)) 
      { 
       bLastOneWasNum = true; 
       sCount = sCount + item; 
      } 
     } 
     dMyobject.Add(sType, sCount); 
     foreach (var item in dMyobject) 
     { 
      Console.WriteLine(item.Key + "- " + item.Value); 
     } 
    } 

Sie erhalten Ausgabe als

Katze - 98

Hund - 75

Grundsätzlich sind Sie immer Typ und Zahlen so, wenn Sie die Zählung verwenden möchten, müssen Sie nicht wieder aufgespalten müssen ...