2010-01-20 9 views
5

ich eine Zeichenfolge haben, die unten in dem Format zu meiner Anwendung geliefert werden würde:Regulärer Ausdruck aufteilen Zeichenfolge in gleiche Länge Brocken

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed 

Was muss ich tun Format es für meine Datenbank so liest es als folgt: mit regulären Ausdrücken würde,

<ece42416 92a1c743 4da51fc1 399ea2fa 155d4fc9 83084ea5 9d1455af c79fafed> 

ich die einfachste Weg, nehme an, dies zu tun, aber ich habe sie nie benutzt, und dies ist das erste Mal, dass ich jemals gebraucht haben, und um ehrlich zu sein, habe ich einfach Ich habe keine Zeit, sie im Moment zu lesen, also wenn mir jemand dabei helfen könnte Ich wäre ewig dankbar. Versuchen

Antwort

2

Was:

string input ="ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed"; 
string target = "<" + Regex.Replace(input, "(.{8})", "$1 ").Trim() + ">"; 

Oder

string another = "<" + String.Join(" ", Regex.Split(input, "(.{8})")) + ">"; 
+0

wahrscheinlich ... wenn die whas die Frage

+0

Er will die andere Richtung gehen. –

+0

sorry Jungs, feste –

2

Regex.Replace(YOURTEXT, "(.{8})", "$1 "); 
2

Sie könnten nur besser sein served eine kleine statische String-Parsing-Methode mit damit umgehen. Ein regulärer Ausdruck könnte es schaffen, aber wenn Sie nicht einen Stapel in einem Stapel machen, werden Sie nicht genug Systemressourcen sparen, damit es sich lohnt, eine RegEx zu warten (wenn Sie nicht bereits mit ihnen vertraut sind, meine ich). Etwas wie:

private string parseIt(string str) 
    { 
     if(str.Length % 8 != 0) throw new Exception("Bad string length"); 
     StringBuilder retVal = new StringBuilder(str) 
     for (int i = str.Length - 1; i >=0; i=i-8) 
     { 
      retVal.Insert(i, " ");  
     } 
     return "<" + retVal.ToString() + ">"; 
    } 
+0

+1 für nicht mit RE :-) – logout