日期:2014-05-17  浏览次数:20423 次

字符串代替
问题1:name="张三"
怎么替换成张*
如果name="王小二"或者"王小二啊"
怎么替换成王****
问题2:
身份证替换
一般身份证18位数123456789012345678
替换成1234************78
但有些是15位的 又怎么替换




------解决方案--------------------
问题一:
C# code
        string s = "张三丰";
        string r = s[0] + new string('*', s.Length - 1);
        Response.Write(r);

------解决方案--------------------
问题二,注意身份证最后一位可能为X或x,所以不能用\d:
C# code
        string s = "123456789012345678";
        string r = Regex.Replace(s, @"(?<=^\d{4})\d+(?=\w{2}$)", delegate(Match match) { return new string('*', match.Value.Length); });
        Response.Write(r);

------解决方案--------------------
哦,第一句:就是将字符串第一个字符和s.Length-1个*拼起来。

第二句:用正则,匹配一个字符串(要求其左边有4个数字,右边有2个单词字符),然后替换成若干个*(数量为该字符串字符数)