19

我有一种情况,我需要尝试过滤掉虚假的 SSN 号码。从我目前看到的情况来看,如果它们是假的,它们都是相同的数字或 123456789。我可以过滤最后一个,但是有没有一种简单的方法来确定所有字符是否相同?

4

6 回答 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 回答