如果标题不够清晰,这是解决问题的程序方法:
[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)
如果您正在使用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)