2010-01-20 9 views
5

ho una stringa che sarà consegnato alla mia applicazione nel seguente formato:espressione regolare per stringa di dividere in pezzi di uguale lunghezza

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed 

Che cosa devo fare è formato per la mia base di dati in modo che si legge come segue:

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

suppongo che il modo più semplice per fare questo sarebbe utilizzando le espressioni regolari, ma non li ho mai usato prima, e questa è la prima volta che ho mai avuto bisogno di, e ad essere onesti, ho semplicemente non ho il tempo di leggere su di loro al momento, quindi se qualcuno mi può aiutare con questo Ne sarei eternamente grato.

risposta

2

Che dire:

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

O

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

probabilmente ... se questo WHAS la questione

+0

Lui vuole andare nella direzione opposta. –

+0

sorry guys, corretto –

2

Prova

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

si potrebbe essere solo meglio servito con un piccolo metodo di stringa di analisi statica per gestirlo. Un'espressione regolare potrebbe averlo fatto, ma a meno che non si stia facendo un mucchio in un batch non si salverà abbastanza nelle risorse di sistema perché valga la manutenzione di un RegEx (se non si è già familiari con loro, intendo). Qualcosa di simile:

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 per non usare RE :-) – logout

Problemi correlati