2016-07-20 17 views
-2

Ich habe die folgende Zeichenfolge, die ich von einer Methode bekomme. Ich würde es gerne analysieren und paaren. Die Reihenfolge der Eingabezeichenfolge ändert sich nicht.Analysiere eine Zeichenfolge in C#

INPUT:

ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9 

OUTPUT

Name value1 
Title value2 
School value3 
. 
. 
. 
Age  value9 

glaube ich durch die Zeichenfolge lesen und value auf der linken Seite zuweisen, wie ich gehen und so weiter. Ich bin jedoch sehr neu in C#.

+0

können Sie verwenden string.split (‚‚), um es aufzubrechen in die einzelnen Teile dann Schleife durch die Teile und verwenden string.split (‘=‘), um den Schlüssel zu erhalten/Wertpaare. –

Antwort

1

Verwenden Sie string.Split und Split-Imput-String, um Schlüssel-Wert-Paar aufzulisten, dann teilen Sie jedes Paar zu Schlüssel und Wert. Taht alles.

0

Sie können etwas tun:

void Main() { string str = „ku = value1, ku = Wert2, ku = value3, ku = value4, ku = value5, lu = value6, lu = Wert7, lu = Wert8, lu = Wert9 ";

var tempStr = str.Split(','); 
    var result = new List<KeyValue>(); 

    foreach(var val in tempStr) 
    { 
     var temp = val.Split('='); 
     var kv = new KeyValue(); 
     kv.Name = temp[0]; 
     kv.Value = temp[1]; 

     result.Add(kv); 
    } 

} 

public class KeyValue 
{ 
    public string Name {get;set;} 
    public string Value{get;set;} 
} 
0

Wenn Sie nicht brauchen, den ersten Teil Sie dies mit String geteilt tun können wie folgt

  1. Split String auf ,String.Split Methode Sequenz von String-Erstellung {"ku=value1","ku=value2",...}
  2. Verwenden Linq des Select Methode zu wenden Sie eine zusätzliche Transformation an
  3. Verwenden Sie Split wieder für jedes Element auf dem Zeichen ‚=‘
  4. Wählen Sie die Artikel nach rechts der ‚=‘, bei Index 1 des neu aufgespalten Artikels
  5. Schleife über alles und drucken Sie Ihre Ergebnisse

Hier ist der Code

var target = "ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9"; 

var split = target.Split(',').Select(a=>a.Split('=')[1]).ToArray(); 
var names = new[]{"Name","Title","School",...,"Age"}; 

for(int i=0;i<split.Length;i++) 
{ 
    Console.WriteLine(names[i]+"\t"+split[i]); 
} 

Wenn Sie mehr darüber erfahren möchten, wie diese Methoden verwenden Sie auf der MSDN-d aussehen kann Schriftstücke, für sie:

-1

Ich schlage vor, auf diese Weise zu versuchen. Split() und regulärer Ausdruck

string inputString = "ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9"; 

    string pattern = "(.*)=(.*)"; 

    foreach(var pair in inputString.Split(',')) 
    { 

     var match = Regex.Match(pair,pattern); 
     Console.WriteLine(string.Format("{0} {1}",match.Groups[1].Value, match.Groups[2].Value)); 
    } 
+1

Regexes sind hier übertrieben; und wenn Sie sie verwenden sollten, sollten Sie aus Effizienzgründen einmal eine 'Regex'-Instanz instanziieren und statt der statischen' Regex.Match() 'die nicht-statische' Match() '-Memberfunktion verwenden. Aber die anderen Antworten mit 'String.Split()' sind besser. – TypeIA

+0

Ich verstehe. Danke für den Kommentar – Anton

Verwandte Themen