2010-01-20 10 views
5

tengo una cadena que se entrega con la solicitud en el siguiente formato:expresión regular para Separar una cadena en trozos de igual longitud

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed 

Lo que tengo que hacer es el formato que para mi base de datos para que se lea como sigue:

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

que asumen la forma más fácil de hacer esto sería el uso de expresiones regulares, pero nunca los han usado antes, y esta es la primera vez que he necesitado, y para ser honesto, yo simplemente No tengo tiempo para leer sobre ellos en este momento, así que si alguien puede ayudarme con esto Yo estaría eternamente agradecido.

Respuesta

2

¿Qué hay de:

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

O

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

probablemente ... si eso WHAS la cuestión

+0

Él quiere ir la otra dirección. –

+0

lo siento chicos, corrigieron –

2

Trate

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

que sólo podría ser mejor servido con un pequeño método de cadena de análisis estático para manejarlo. Una expresión regular podría hacerlo, pero a menos que haga un montón en un lote no ahorrará lo suficiente en recursos del sistema para que valga la pena el mantenimiento de un RegEx (si no está familiarizado con ellos, me refiero) Algo así como:

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 por no usar RE :-) – logout

Cuestiones relacionadas