我有一个包含16个字母数字字符的字符串,例如F4194E7CC775F003.我想将其格式化为F419-4E7C-C775-F003.
我试过用
string.Format("{0:####-####-####-####}","F4194E7CC775F003");
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为它不是数值.
所以我想出了以下内容:
public class DashFormatter : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
return this;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
char[] chars = arg.ToString().ToCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < chars.Length; i++)
{
if (i > 0 && i % 4 == 0)
{
sb.Append('-');
}
sb.Append(chars[i]);
}
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
并通过使用
string.Format(new DashFormatter(), "{0}", "F4194E7CC775F003");
Run Code Online (Sandbox Code Playgroud)
我能够解决问题,但是我希望有更好/更简单的方法来解决它?也许一些LINQ魔术?
谢谢.
你可以在没有Linq的情况下在一行中完成:
StringBuilder splitMe = new StringBuilder("F4194E7CC775F003");
string joined = splitMe.Insert(12, "-").Insert(8, "-").Insert(4, "-").ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |