子字符串在每 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
而且我不想添加另一个如果。我可以动态执行此操作以检查长度,然后将其子串起来吗?
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