我已经看到一些有趣的方法来处理Linq的字符串:
例如,要通过将X替换为X来隐藏字符串中的数字,我可以这样做:
string strNum = "Hello, my number is ... 3456c456";
string strHidden = new String(strNum.ToCharArray()
.Select(c => (!char.IsNumber(c)) ? c : 'X').ToArray());
Console.WriteLine(strHidden);
是否有Linq方法可以执行此操作,只有当前字符为数字且以下两个字符为数字时才会替换数字?
有很多方法可以定制上面的方法,但我想知道是否有一种简单的linq方法可以一次使用多个字符。
编辑:将当前字符的要求添加为数字。
答案 0 :(得分:5)
根据我的评论中的解释,您可以使用LINQ:
执行此操作string strHidden = new String(Enumerable.Range(0, strNum.Length)
.Select(i =>
char.IsNumber(strNum[i]) &&
Enumerable.Range(i+1,2).All(j => j < strNum.Length && char.IsNumber(strNum[j]))
? 'X'
: strNum[i])
.ToArray());
正则表达式替代:
var strHidden = Regex.Replace(strNum, @"\d(?=\d{2})", "X");
好多了,不是吗?