/// <summary> /// 将传入的字符串中间部分字符替换成特殊字符 /// </summary> /// <param name="value">需要替换的字符串</param> /// <param name="startLen">前保留长度</param> /// <param name="endLen">尾保留长度</param> /// <param name="specialChar">特殊字符</param> /// <returns>被特殊字符替换的字符串</returns> public static string ReplaceWithSpecialChar(this String value, int startLen, int endLen, string specialChar) { if (!value.IsNullOrEmpty()) { value = string.Create(value.Length, (value, startLen, endLen, specialChar), (dst, v) => { ReadOnlySpan<char> startValue = v.value.Substring(0, v.startLen); startValue.CopyTo(dst.Slice(0, startValue.Length)); int subLenth = v.value.Length - v.startLen - v.endLen; subLenth = subLenth < 0 ? (v.value.Length - v.startLen) : subLenth; ReadOnlySpan<char> specialValue = v.specialChar; for (int i = 0; i < subLenth; i++) { specialValue.CopyTo(dst.Slice(startValue.Length + i, 1)); } ReadOnlySpan<char> endValue = subLenth >= 0 ? v.value.Substring(v.startLen + subLenth) : string.Empty; endValue.CopyTo(dst.Slice(startValue.Length + subLenth, endValue.Length)); }); } return value; }
此时,你可能会对Create方法感到好奇,但你不一定知道为什么它比你之前使用过的方法更好。Create API 的用处是因地制宜的,但在适当的情况下,它可以发挥极大的威力。
1:https://www.cnblogs.com/willick/p/14152115.html
C#的String.Create方法替换手机号或证件号为“*”
原文:https://www.cnblogs.com/imhaiyang/p/14504426.html