Определить, все ли символы в строке одинаковы

У меня есть ситуация, когда мне нужно попытаться отфильтровать поддельные номера SSN. Из того, что я видел до сих пор, если они поддельные, они все одинаковы или 123456789. Я могу отфильтровать последний, но есть ли простой способ определить, все ли символы одинаковы?

6 ответов


return (ssn.Distinct ().Count () = = 1)


этот метод должен делать трюк:

public static bool AreAllCharactersSame(string s)
{
    return s.Length == 0 || s.All(ch => ch == s[0]);
}

объяснение: если длина строки равна 0, то, конечно, все символы одинаковы. В противном случае символы строки будут одинаковыми, если они все равны первому.


чтобы избавиться от этой проблемы, так как мы говорим о SSN. Вы можете проверить и использовать этой демонстрационный проект CodeProject для проверки SSN. Хотя это в VB.Net думаю, ты можешь придумать то же самое.


захватить первый символ, и петли.

var ssn = "222222222";
var fc = ssn[0];

for(int i=0; i<ssn.Length; i++)
{
    if(ssn[i]!=fc)
        return false;
}

return true;

конечно, вы также должны проверить длину ssn


char[] chrAry = inputStr.ToCharArray();
char first = chrAry[0];

var recordSet = from p in chrAry where p != first select p;
return !recordSet.Any();

что вы думаете об этом:

"jhfbgsdjkhgkldhfbhsdfjkgh".Distinct().Skip(1).Any()

чтобы избежать подсчета общего количества символов? вы должны проверить перед null или empty.