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

前端之家收集整理的这篇文章主要介绍了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://www.f2er.com/csharp/100819.html

猜你在找的C#相关文章