2013-04-16 9 views
5

Ho una situazione in cui ho bisogno di provare e filtrare i numeri SSN falsi. Da quello che ho visto finora se sono falsi sono tutti lo stesso numero o 123456789. Posso filtrare per l'ultimo, ma c'è un modo semplice per determinare se tutti i personaggi sono uguali?C# determina se tutti i caratteri in una stringa sono gli stessi

+1

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

+0

utilizzano solo il primo carattere della stringa e utilizzare le risposte a questa domanda precedente per contare il numero di occorrenze: http://stackoverflow.com/questions/10391481/number-of-occurrences-of-a-character-in-a-string – JeffO

+0

Quante volte il problema sarà in altri luoghi? Se necessario, è necessario compensare l'incertezza richiesta ... – Jay

risposta

34

ritorno (SSN. Distinct() Count() == 1)

+7

Credo che tu intenda 'ssn.Distinct(). Count()' – Aron

+0

Ottimo, utilizza LINQ. –

+0

corretto per correzione @ Aron – AShelly

1

Prendi il primo carattere e loop.

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

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

return true; 

, naturalmente, si dovrebbe anche controllare la lunghezza di ssn

+0

La stringa è nulla, questa interruzione: p – Jay

+0

Ya .. La stringa vuota interromperà anche questo. OP dovrebbe occuparsi di questo problema. –

5

Questo metodo dovrebbe fare il trucco:

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

Spiegazione: se la lunghezza di una stringa è 0, poi, naturalmente, tutti i personaggi sono la stesso. Altrimenti, i caratteri di una stringa sono tutti uguali se sono tutti uguali al primo.

+0

Cosa succede se è lungo solo 1 carattere: P – Jay

+0

@Jay Una stringa di 1 carattere ha lo stesso carattere, quindi un generale "scoprire se i caratteri di questa stringa sono tutti uguali" dovrebbe restituire 'true'. –

+0

Nessun controllo nullo ... – Jay

3

Per GID liberarsi di questo problema, dal momento che stiamo parlando di SSN. È possibile verificare e utilizzare il progetto dimostrativo CodeProject this per convalidare SSN. Anche se questo è in VB.Net, immagino che tu possa venire con la stessa idea. !

+0

La codifica delle restrizioni qui è probabilmente una soluzione migliore di qualsiasi filtro che si pensa. – AShelly

+0

ma come si convalida un SSN se i valori immessi erano falsi? per esempio 123456798? Ci sono un certo numero di regole che dobbiamo implementare con la nostra validazione. Controllare se tutti i caratteri sono gli stessi non basterebbe a renderlo affidabile. – lexeRoy

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

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