2013-04-16 16 views
5

私は偽のSSN番号を取り除く必要がある状況があります。私が今まで見たことは、偽物であればすべて同じ番号または123456789です。最後のものはフィルタリングできますが、すべての文字が同じかどうかを判断する簡単な方法はありますか?C#文字列内のすべての文字が同じであるかどうかを調べる

+1

S = nullを&& s.Length> 1つの&& S [s.Length - 1]!== S [0] – Jay

+0

は単なる文字列の最初の文字を使用してカウントするように、この前の質問への回答を使用出現回数:http://stackoverflow.com/questions/10391481/number-of-occurrences-of-a-character-in-a-string – JeffO

+0

問題は他の場所で何回起こりますか?必要であれば不確実性によってオフセットされる必要があります... – Jay

答えて

34

リターン(SSN。Distinct() .Count()== 1)

+7

私はあなたが 'ssn.Distinct()を意味すると信じています。Count()' – Aron

+0

素晴らしい、それはLINQを利用しています。 –

+0

@ Aronの訂正 – AShelly

1

最初の文字を取得し、ループします。

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

は説明:文字列の長さが0であれば、その後の進路すべての文字がある

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

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

return true; 

もちろん、あなたはまた、この方法は、トリックを行う必要がありますssn

+0

文字列はnullです。これはブレークします:p – Jay

+0

Ya ..空の文字列もこれを破ります。 OPはこの問題に注意する必要があります。 –

5

の長さをチェックする必要があります同じ。それ以外の場合、文字列の文字はすべて最初のものと等しい場合はすべて同じです。我々はSSNについて話しているので、

+0

長さが1文字の場合はどうすればいいですか:P – Jay

+0

@Jay 1文字の文字列はすべて同じ文字なので、一般的に「この文字列の文字がすべて同じかどうかを調べる」メソッドは 'true'を返します。 –

+0

いいえnullチェック... – Jay

3

は、この問題を取り除くgidをするには。 this CodeProjectデモプロジェクトを確認して使用して、SSNを検証することができます。これはVB.Netにありますが、同じアイデアを考え出すことができます。

+0

ここでの制限事項のコーディングは、考えているフィルタよりも優れた解決策です。 – AShelly

+0

しかし、入力された値が偽の値だった場合、どのようにSSNを検証しますか?例えば123456798?検証で実装する必要があるルールがいくつかあります。すべての文字が同じであるかどうかを確認するだけでは、信頼性が高くなりません。 – lexeRoy

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

var recordSet = from p in chrAry where p != first select p; 
return !recordSet.Any(); 
関連する問題