子字符串在每 4 个字符后添加可用空格

本文关键字:添加 空格 字符 字符串 | 更新日期: 2023-09-27 18:32:15

public static string ToIbanFormat(this string value)
        {
            if (value.Length > 16)
            {
                string iban = value.Substring(0, 4) + " " + 
                              value.Substring(4, 4) + " " + 
                              value.Substring(8, 4) + " " + 
                              value.Substring(12, 4) + " " +
                              value.Substring(16);
                return iban;
            }
            return value;
        }

如果每 4 个字符后还有更多字符也可以使用空格,我可以以某种方式动态地做到这一点。

例如,我的代码不适用于:GR16 0110 1250 0000 0001 2300 695

而且我不想添加另一个如果。我可以动态执行此操作以检查长度,然后将其子串起来吗?

子字符串在每 4 个字符后添加可用空格

Regex.Replace(value, ".{4}", "$0 ").Trim()应该可以解决问题。

您可以将每 4 个字符替换为该字符加一个空格:

return value
    .Select((x, i) => (i + 1) % 4 == 0 ? x + " " : x.ToString())
    .Aggregate((x, y) => x + y);

这有效:

var text = "GR1601101250000000012300695";
var result = String.Join(" ",
    text
        .ToCharArray()
        .Buffer(4)
        .Select(x => new string(x.ToArray())));

Buffer要求你从Microsoft反应式框架团队中获取"Ix-Main"。

就我个人而言,我喜欢正则表达式方法,但我认为这种方法更具可读性,因此更易于维护。

String str = "GR1601101250000000012300695";
StringBuilder result=new StringBuilder();
for(int i=0;i<str.Length;i++)
{
  if ((i+1) % 4 == 0)
    result.Append(str[i] + " ");
  else
    result.Append(str[i]);
}

结果 = GR16 0110 1250 0000 0001 2300 695