我有一种情况,我需要尝试过滤掉虚假的 SSN 号码。从我目前看到的情况来看,如果它们是假的,它们都是相同的数字或 123456789。我可以过滤最后一个,但是有没有一种简单的方法来确定所有字符是否相同?
问问题
18082 次
6 回答
54
return (ssn. Distinct() .Count() == 1)
于 2013-04-16T01:51:57.140 回答
8
这种方法应该可以解决问题:
public static bool AreAllCharactersSame(string s)
{
return s.Length == 0 || s.All(ch => ch == s[0]);
}
解释:如果一个字符串的长度是0,那么当然所有的字符都是一样的。否则,如果字符串的所有字符都等于第一个字符,则它们都是相同的。
于 2013-04-16T01:51:48.660 回答
3
为了摆脱这个问题,因为我们正在谈论 SSN。您可以检查并使用此CodeProject 演示项目来验证 SSN。尽管这是在 VB.Net 中,但我想您也可以提出相同的想法。
于 2013-04-16T01:57:55.240 回答
1
抓住第一个字符,然后循环。
var ssn = "222222222";
var fc = ssn[0];
for(int i=0; i<ssn.Length; i++)
{
if(ssn[i]!=fc)
return false;
}
return true;
当然你也应该检查长度ssn
于 2013-04-16T01:51:23.740 回答
1
char[] chrAry = inputStr.ToCharArray();
char first = chrAry[0];
var recordSet = from p in chrAry where p != first select p;
return !recordSet.Any();
于 2014-11-14T18:07:03.027 回答
-1
你怎么看:
"jhfbgsdjkhgkldhfbhsdfjkgh".Distinct().Skip(1).Any()
为了避免计算字符的整数?你应该在 null 或空之前检查。
于 2018-06-20T12:16:31.197 回答