c# - 格式化字母数字字符串

我有一个包含 16 个字母数字字符的字符串,例如F4194E7CC775F003。我想将其格式化为 F419-4E7C-C775-F003。

我尝试过使用

string.Format("{0:####-####-####-####}","F4194E7CC775F003");

但这不起作用,因为它不是数值。

所以我想出了以下内容:

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();
  }
}

并通过使用

string.Format(new DashFormatter(), "{0}", "F4194E7CC775F003");

我能够解决问题,但是我希望有更好/更简单的方法来解决这个问题?也许是一些 LINQ 魔法?

谢谢。

最佳答案

不用Linq也可以一行完成:

        StringBuilder  splitMe = new StringBuilder("F4194E7CC775F003");
        string joined = splitMe.Insert(12, "-").Insert(8, "-").Insert(4, "-").ToString();

https://stackoverflow.com/questions/2287023/

相关文章:

python - 在没有空格或换行符的python中打印变量

ios - iPhone : How to get number from string with

emacs - 在 LaTeX 模式 emacs 中缩进 C 代码区域

forms - 如何在 Laravel 中处理日期输入

sql - 在 Oracle 中将时差转换为给定格式

java - 在字符串模板电子邮件中格式化日期

formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

javascript - 如何使用变量名实现字符串格式化程序

formatting - Gnuplot 平滑置信区间线而不是误差线

python - 在python 3中将表情符号转换为Unicode,反之亦然