使用正则表达式将"9954-4740-4491-4414"转换为"99:54:47:40:44:91:44:14"

Mer*_*itt 4 c# regex

如果标题不够清晰,这是解决问题的程序方法:

[TestMethod]
public void Foo()
{
    var start = "9954-4740-4491-4414";

    var sb = new StringBuilder();
    var j = 0;
    for (var i = 0 ; i < start.Length; i++)
    {
        if ( start[i] != '-')
        {
            if (j == 2)
            {
                sb.AppendFormat(":{0}", start[i]);
                j = 1;
            }
            else
            {
                sb.Append(start[i]);
                j++;
            }
        }
    }

    var end = sb.ToString();

    Assert.AreEqual(end, "99:54:47:40:44:91:44:14");
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

如果您正在使用C#4,那么您需要的是:

string result = string.Join(":", Regex.Matches(start, @"\d{2}").Cast<Match>());
Run Code Online (Sandbox Code Playgroud)

对于C#3,您需要提供一个string[]加入:

string[] digitPairs = Regex.Matches(start, @"\d{2}")
                           .Cast<Match>()
                           .Select(m => m.Value)
                           .ToArray();
string result = string.Join(":", digitPairs);
Run Code Online (Sandbox Code Playgroud)