一个关于银行的一个功能模块,需要将隐私信息银行账号中间部分用*代替,于是写下了,如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/// <summary>
/// 将传入的字符串中间部分字符替换成特殊字符
/// </summary>
/// <param name="value">需要替换的字符串</param>
/// <param name="startLen">前保留长度</param>
/// <param name="endLen">尾保留长度</param>
/// <param name="replaceChar">特殊字符</param>
/// <returns>被特殊字符替换的字符串</returns>
private
static
string
ReplaceWithSpecialChar(
string
value,
int
startLen = 4,
int
endLen = 4,
char
specialChar =
'*'
)
{
try
{
int
lenth = value.Length - startLen - endLen;
string
replaceStr = value.Substring(startLen, lenth);
string
specialStr =
string
.Empty;
for
(
int
i = 0; i < replaceStr.Length; i++)
{
specialStr += specialChar;
}
value = value.Replace(replaceStr, specialStr);
}
catch
(Exception)
{
throw
;
}
return
value;
}
|
调用以及效果如下:
ReplaceWithSpecialChar("柯小呆", 1, 0,'*') -->Result: 柯*呆
ReplaceWithSpecialChar("622212345678485") -->Result: 6222*******8485
ReplaceWithSpecialChar("622212345678485", 4 , 4 , '*') -->Result: 6222*******8485
注:如果传入的startLen/endLen 超过字符串长度,将抛出下标越界异常