正则表达式将字符串拆分为相等长度的块

时间:2010-01-20 12:01:41

标签: c# regex

我有一个字符串,它将以下面的格式传送到我的应用程序:

ece4241692a1c7434da51fc1399ea2fa155d4fc983084ea59d1455afc79fafed

我需要做的是为我的数据库格式化它,如下所示:

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

我认为最简单的方法是使用正则表达式,但我以前从未使用它们,这是我第一次需要,而且说实话,我根本就没有时间现在就读一读,所以如果有人能帮助我,我会永远感激。

3 个答案:

答案 0 :(得分:2)

尝试

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

答案 1 :(得分:2)

怎么样:

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

或者

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

答案 2 :(得分:2)

使用一个小的静态字符串解析方法处理它可能会更好。一个正则表达式可能会完成它,但除非你在批处理中做了很多事情,否则你将无法在系统资源中保存足够的值来维护一个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() + ">";
    }