Регулярное выражение для разделения строки на блоки равной длины

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

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed

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

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

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

5
задан Yi Jiang 9 July 2011 в 06:54
поделиться

3 ответа

Как насчет:

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

или

string another = "<" + String.Join(" ", Regex.Split(input, "(.{8})")) + ">";
2
ответ дан 14 December 2019 в 13:36
поделиться

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

    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
ответ дан 14 December 2019 в 13:36
поделиться

Try

Regex.Replace(YOURTEXT, "(.{8})", "$1 ");
2
ответ дан 14 December 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: