2013-04-16 10 views
5

Sahte SSN numaralarını denemek ve filtrelemem gereken bir durum var. Şimdiye kadar gördüğüm kadarıyla hepsi aynı numara veya 123456789'dur. Sonuncusunu filtreleyebilirim, fakat tüm karakterlerin aynı olup olmadığını belirlemenin kolay bir yolu var mı?C# bir dizedeki tüm karakterlerin aynı olup olmadığını belirleyin

+1

s = null && s.Length> 1 && s [s.Length - 1] == s [0] – Jay

+0

Sadece dizesinde ilk karakteri kullanmak ve saymak için bu önceki soruya cevap kullanmak sayıların sayısı: http://stackoverflow.com/questions/10391481/number-of-occurrences-of-a-character-in-a-string – JeffO

+0

Sorun başka yerlerde kaç kez olacak? Gerekirse belirsizlikle dengelenmesi gerekiyor ... – Jay

cevap

34

dönüş (ssn. Distinct() .Count() == 1)

+7

ssn.Distinct() anlamına geldiğine inanıyorum. Count() ' – Aron

+0

Harika, LINQ kullanır. –

+0

Aron düzeltmesi için sabit – AShelly

1

İlk karakteri yakala ve döngü.

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

Açıklama: Bir dizgenin uzunluğu 0 ise, o zaman tabii ki tüm karakterler

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

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

return true; 

tabii ki de bu yöntem hile yapmak gerekir ssn

+0

Dize null bu aralar: p – Jay

+0

Ya .. Boş dize de bunu kırın. OP bu soruna dikkat etmeli. –

5

uzunluğunu kontrol etmelidir aynı. Aksi takdirde, bir dizenin karakterleri hepsi ilkine eşitse hepsi aynıdır. Biz SSN bahsediyoruz çünkü

+0

Yalnızca 1 karakter uzunluğundaysa: P – Jay

+0

@Jay 1 karakterlik bir dizenin tümü aynı karaktere sahiptir, dolayısıyla genel bir "bu dizenin karakterlerinin hepsinin aynı olup olmadığını öğren" yöntemi true değerini döndürmelidir. –

+0

Hayır null check ... – Jay

3

, bu sorunun kurtulmak Gid. SSN'yi doğrulamak için this CodeProject demo projesini kontrol edebilir ve kullanabilirsiniz. Bu VB.Net'te olsa da, sanırım aynı fikirle gelebilirsiniz. !

+0

'un Dikkat Edilmesi Gerekenler Buradaki kısıtlamaların kodlanması, muhtemelen düşündüğünüz herhangi bir filtreden daha iyi bir çözümdür. – AShelly

+0

ama girilen değerler sahte olan bir SSN'yi nasıl doğrularsınız? örneğin 123456798? Doğrulama ile uygulamak için gereken kurallar vardır. Tüm karakterlerin aynı olup olmadığını kontrol etmek, onu güvenilir kılmak için yeterli olmaz. – lexeRoy

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

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