Регулярное выражение для разбиения строки на куски одинаковой длины - PullRequest
5 голосов
/ 20 января 2010

У меня есть строка, которая будет доставлена ​​в мое приложение в следующем формате:

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed

Что мне нужно сделать, так это отформатировать его для моей базы данных, чтобы оно выглядело следующим образом:

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

Я предполагаю, что самый простой способ сделать это - использовать регулярные выражения, но я никогда не использовал их раньше, и это первый раз, когда мне это было нужно, и, честно говоря, у меня просто нет времени читать их сейчас, так что если кто-нибудь сможет мне помочь с этим, я буду вечно благодарен.

Ответы [ 3 ]

2 голосов
/ 20 января 2010

А как же:

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

Или

string another = "<" + String.Join(" ", Regex.Split(input, "(.{8})")) + ">";
2 голосов
/ 20 января 2010

Возможно, вам лучше использовать небольшой статический метод анализа строк, чтобы справиться с этим. Регулярное выражение может сделать это, но если вы не делаете пакет в пакете, вы не сэкономите достаточно системных ресурсов, чтобы оно стоило обслуживания RegEx (если вы еще не знакомы с ними, я имею в виду ). Что-то вроде:

    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 голосов
/ 20 января 2010

Попробуйте

Regex.Replace(YOURTEXT, "(.{8})", "$1 ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...