/ / Wyrażenie regularne w celu podzielenia łańcucha na fragmenty o równej długości - c #, regex

Wyrażenie regularne, aby podzielić ciąg na fragmenty o równej długości - c #, regex

Mam ciąg, który zostanie dostarczony do mojej aplikacji w poniższym formacie:

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed

Muszę sformatować go dla mojej bazy danych, aby wyglądał następująco:

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

Zakładam, że najprościej to zrobićużywając wyrażeń regularnych, ale nigdy wcześniej ich nie używałam, i to jest pierwszy raz, kiedy potrzebowałem, i szczerze mówiąc, po prostu nie mam czasu, aby je teraz przeczytać, więc jeśli ktokolwiek mógłby pomóż mi z tym, będę wiecznie wdzięczny.

Odpowiedzi:

2 dla odpowiedzi № 1

Co powiesz na:

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

Lub

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

2 dla odpowiedzi nr 2

Możesz być lepiej obsłużony małymmetoda statycznego parsowania łańcuchów do obsługi. Wyrażenie regularne może to zrobić, ale jeśli nie robisz paczki w grupie, nie zaoszczędzisz wystarczającej ilości zasobów systemowych, aby to było warte zachowania RegEx (jeśli nie jesteś do nich dobrze zaznajomiony, mam na myśli ). Coś jak:

    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() + ">";
}

2 dla odpowiedzi nr 3

Próbować

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