2010-01-12 11 views
0

Je veux vérifier si deux chaînes ont la même longueur. J'ai essayé ce qui suit, mais cela ne fonctionne pas.Comment vérifier si deux chaînes ont la même longueur?

string passnew = "1233"; 
string passcnfrm = "1234"; 

if((passnew.Length&&passcnfrm.Length)>6 ||(passnew.Length&&passcnfrm.Length)<15) 
{ 
    // ... 
} 

Pourquoi cela ne fonctionne-t-il pas? De quoi ai-je besoin pour changer?

+0

Son pas clair ce que vous essayez d'obtenir - ce qui fait 6 et 15 a à voir avec la longueur étant la même chose? – Dror

+0

J'ai édité la question un peu; J'espère que je n'ai pas enlevé accidentellement aucun détail ... – dtb

+1

Assurez-vous de vérifier votre logique aussi. Une fois que vous avez corrigé la syntaxe, votre condition actuelle est vraie si les deux chaînes dépassent 6 ** ou ** les deux chaînes sont plus courtes que 15. Il est vrai lorsque les deux chaînes sont vides ou que les deux chaînes ont une longueur de 256. Incertain si c'est ce que tu veux. –

Répondre

9
if(passnew.Length == passcnfrm.Length && 
    passnew.Length > 6 && passnew.Length < 15) 
{ 
    // do stuff 
} 
+2

Envisagez également de vérifier l'égalité des mots de passe. Pour ce faire, remplacez 'passnew.Length == passcnfrm.Length' par' passnew == passcnfrm' – Scoregraphic

+0

@Scoregraphic, je suis d'accord, mais puisque OP a demandé "la même longueur", je garderai ceci intacte, ty pour votre comment –

1
if(passnew.Length == passcnfrm.Length && 
    (passnew.Length < 15 && passnew.Length > 6)) 
{ 
    // ... 
} 

Vérifie les deux sont de même longueur, et l'un est supérieur à 6 et inférieur à 15 caractères.

3

Il vous manque quelques leçons de syntaxe de base. Ce que vous écrivez à l'intérieur de ces crochets sont des conditions. Nous avons des opérateurs unaires (opérant sur une chose), des opérateurs binaires (deux) et un opérateur tertiaire (oublions celui-là).

Vous ne pouvez pas construire quelque chose comme votre "test de limite" avec ceux facilement.

Une façon:

(passnew.Length > 6) && (passcnfrm.Length > 6) 

Mais vous ne testez pas si la longueur est égale de toute façon, même si vous pouvez utiliser une syntaxe comme ça. Vous semblez vouloir comparer si les deux ont plus de 6 caractères et moins de 15 caractères. Un à 7 et un à 14 satisferait à la fois les conditions ..

+0

Ne vous occupez jamais de la syntaxe. Clairement pas même près de corriger dans une forme quelconque de pseudo code. –

+1

Juste un petit détail, les opérateurs (ou fonctions) prenant trois arguments sont appelés ternaire, pas tertiaire. –

+0

@Matajon Ouch. Merci d'avoir fait remarquer cela. Je vais laisser la réponse rester comme ça pour montrer ma stupidité et me rappeler que la preuve sera mieux lue dans les réponses suivantes. –

0

qui serait:

if(passcnfrm.Length.Equals(passnew.Length)) 
{ 
    //do stuff 
} 
0

Une probablement meilleure façon de le faire est:

if ((passnew != null && passcnfrm != null) 
    (passnew == passcnfrm) 
&& (passnew.Length > 6 && passnew.Length < 15)) 
{ 
    // do stuff 
} 

Masque la vérification de la longueur à l'intérieur du Vérification de l'égalité dont vous aurez probablement besoin, ce n'est pas dans votre question, mais les noms des variables indiquent clairement que vous y faites une fonction de changement de mot de passe. J'ai ajouté la vérification null pour m'assurer que les contrôles de longueur ne jettent pas une exception NullReferenceException, inutile dans l'exemple parce que vous attribuez les deux manuellement, mais que vous pourriez enregistrer des problèmes si vous convertissez cette méthode en une méthode ultérieure.

+0

Merci, je l'ai – vasanth

0

Vous pouvez utiliser comme ceci: si (s.Contains (s1 [i]))

ou:

booléen equalsIgnoreCase (String anotherString);

ou utiliser cette méthode:

occurrence int static (string [] a, chaîne a2) {int occ = 0; pour (int i = 0; i < a.Longueur; i ++) { si (a [i] .Equals (a2)) { ocC++; }

 } 
     return occ; 
    } 
Questions connexes