Vérifier Si une Chaîne Contient un Mot et Ensuite Vérifier Si Elle Commence Avec dit Mot et Si Il Ne marche pas?
Avoir un autre chose de difficile ici les gars, au fond, je voudrais vérifier si une chaîne contient le mot "Toto" et si elle ne contient-il, sera-t-elle avec elle? Si elle ne démarre avec Toto, il devrait être le seul Foo qui commence avec un capital, tous les autres devraient être les petites lettres.
Si les critères ci-dessus sont remplies, elle doit retourner true.
Si la chaîne contient des Foo mais il ne démarre pas avec Toto, il doit immédiatement retourner faux, puisque vous ne pouvez pas avoir un capital Foo dans le milieu de la chaîne.
Dans le cas où ladite chaîne contient des foo, mais il ne démarre pas avec Toto, toutes les instances de foo doivent être en minuscules. Si ce critère est respecté, return true.
Je dois mentionner que je suis à la recherche d'un code C#, j'ai essayé et n'ont pas encore réussi, mais depuis que je l'programmation pour 2 semaines, je ne pense pas que ce sera un problème pour certaines de vous de la saison pro.
C'est ce que j'ai essayé, comme demandé, je pense que son faaar mais au moins j'ai essayé.
if (Title.Contains("Foo") == true && Regex.IsMatch(Title, "^Foo") == true)
{
CheckAnd = true;
}
else if (Title.Contains("Foo") == true && Regex.IsMatch(Title, "^Foo") == false)
{
CheckAnd = false;
}
else if (Regex.IsMatch(Title, "^foo"))
{
CheckAnd = false;
}
else
{
CheckAnd = true;
}
Ok les gars, on y est presque, c'est ce que j'en ai de toutes vos réponses:
if (Title.IndexOf("Foo") == 0 && Title.LastIndexOf("Foo") == 0)
{
CheckAnd = true;
}
else if (Title.LastIndexOf("Foo") > 0)
{
CheckAnd = false;
}
else if(Title.Contains("foo") && Title.StartsWith("Foo") == false && PUT CHECK HERE)
La dernière chose que j'ai besoin de vérifier que toutes les occurrences de foo sont en minuscules dans le dernier else if déclaration ?
- Pouvez-vous nous montrer ce que vous avez essayé?
- On dirait que vous voulez que nous pour résoudre un problème de l'école
- hahahah pas tout à fait, im la validation des noms de fichier. Je viens de programme comme un passe-temps, ive vient de commencer et im vraiment en profiter.
Vous devez vous connecter pour publier un commentaire.
Si je comprend correctement, cela devrait le faire !
Ne veux pas lu mon livre? Voici la réponse:
Comme un bonus, c'est le plus rapide à l'exécution de la solution.
Lire la suite pour des leçons dans la logique de codage (humour ce vieil homme)
Cette question peut-être vieux, mais pour le bien de ceux trouver cette question plus tard qui sont curieux sur la façon d'logiquement distiller des problèmes (donc merci de ne pas downvote ce lurker qui s'est enfin décidée à poster), voici mon massivement exagérée de l'analyse de très simple, ce devoir à la maison:
J'ai couru à une série de tests pour voir quelles options ont été le plus souvent, cela m'aide à voir les défauts dans ma logique. Je vais aussi m'expliquer mon processus de pensée, car, à mon humble avis, la compréhension de la façon de décortiquer le problème de la logique de base est une bonne chose à savoir pour l'utilisation dans le monde réel.
Après tout, c'est ce que les Exigences d'Affaires Docs sont... des problèmes qui doivent être retenues dans des specs fonctionnelles (par exemple, la conception architecturale).
Étape 1
Éliminer Les Informations Superflues
Sur la base des exigences donné, minuscules foo peut ou ne peut pas d'importance: Il n'y a pas de déclaration explicite qu'une chaîne de caractères ne contenant pas de foo et ne contenant pas de truc devrait retourner faux; Il y a aussi pas explicitement mention qui dit que la chaîne ne contenant pas de Foo et ne contenant pas de foo doit retourner true.
Dans un monde parfait, on revient en arrière pour obtenir des précisions sur les exigences, mais dans certains cas, il n'y a pas de temps. En supposant qu'il existe une date limite, je voudrais aller de l'avant avec l'hypothèse que tous nous nous soucions de Foo être en majuscules uniquement lors de la première position dans la phrase, minuscule, toutes les autres fois, nous allons ignorer les foo tout à fait, et si le "client", se plaint, soulignent le manque de clarté et d'expliquer pourquoi vous avez fait un jugement d'appel (pour garder le projet dans les temps et selon le budget, le cas échéant).
Étape 2
Briser la logique OU/ET morceaux de:
La rupture de Foo dans les composants nous permet de voir des pièces individuelles, qui peuvent être plus facile que de regarder le tout. Donc, si nous brisons la chaîne dans des "trucs avant de Foo" (même si c'est "rien") et de "trucs après Foo" OU si Toto n'est pas là pour briser la chaîne, nous n'avons qu'une seule pièce à regarder. (Nos cerveaux cela tout le temps - il est appelé à la reconnaissance des formes).
SI La chaîne ne peut pas être partagé parce que Toto n'est pas trouvé
OU
fractionnement sur Foo nous donne pas plus de deux pièces: rien avant, et tout ce qui est après
ET (implicite par le précédent contrôle seulement la recherche d'un vide "avant" et un seul "section" dans le "après")
Foo n'est pas trouvé n'importe où ailleurs dans la chaîne
Son est de bonne qualité? Eh bien, il est précis à 100%, mais nous pouvons couper quelques trucs et distiller elle - garder à l'esprit les ordinateurs ne pense pas comme les humains, de sorte que notre mental traitement est inefficace pour eux.
Parce que Toto ne pas être trouvé est considéré comme valide, et Toto au début est valide, mais Toto n'importe où ailleurs plus tard dans la chaîne n'est pas valide, nous pouvons dire:
SI Foo n'est pas trouvé
OU
Foo n'est pas trouvé n'importe où dans la chaîne au-delà de la première position
Semble serré, droit? N'arrêtez pas maintenant. Nous pouvons faire mieux.
Si Toto est trouvé au début, nous sommes très bien avec elle, non? Donc, "Foo n'est pas Trouvé" OU "Foo est trouvé au début ET à la Foo n'est pas trouvé n'importe où ailleurs" peut être vu à partir de la plus pure logique (booléen, vrai/faux, noir et blanc) point de vue:
Donc maintenant définir comme non valide uniquement les cas qui sont garantis non valide, et marque le reste valide. Nous allons utiliser boolean mathématiques pour déterminer tous les cas d'utilisation.
Maintenant que nous avons étiqueté seulement les cas absolument forcer le retour de faux, nous pouvons faire le calcul pour voir le seul cas où nous obtenons un invalide/valeur false.
FNA = FN1 et FN2 (donc si FNA & X = vrai, alors F1 & X doit être vrai, et F2 & X doit être aussi vrai);
FNA et/ou FF1 = vrai, alors nous savons que l'ensemble des combinaisons et/ou de ces 4 variables = true; Ce qui laisse une seule variable de gauche à combiner, et l'on voit très rapidement que FF2 et tout ce sera toujours faux.
Donc traduit dans la logique humaine... voir comment beaucoup plus simple de cette tâche?
SEULEMENT FALSE SI Foo est trouvé après la position 1
Ou, pour faire basculer le booléen (étant donné que les exigences dire de retourner true pour la validité des cas):
SI Foo n'est PAS retrouvé après la position 1, la chaîne est valide.
Ou, pour le dire plus comme un ordinateur de la pensée:
SI numérisation à partir de l' fin de la chaîne jusqu'à ce que le 2ème et le dernier caractère ne trouve pas de Foo, la chaîne est valide
Là, maintenant, nous ne pouvons pas nous distillent le plus bas. Donc, nous allons coder ces différents bits de la logique et de voir comment ils exécutent dans le code réel:
De sortie:
Les résultats et les Conclusions de
Tester Une (logique humaine de visuellement fractionnement sur/compter les mots trouvés), par rapport à l'essai B (numérisation à l'aide d'index avec le distillée logique), Un Test s'exécute plus de 220% de plus!
Test C est le meilleur interprète seule une analyse de la chaîne de besoin. À moins de 30% le temps de traitement nécessaire (Test A prend plus de 340%! de la quantité de temps de Test C nécessite de terminer le même travail).
Alors j'espère que certains étudiants, quelque part, a lire le présent et l'ampoule s'en va. Vous pouvez toujours trouver des moyens de faire des trucs qui "fonctionne", mais la compréhension de la logique booléenne et la façon de distiller un concept vers le bas à son noyau peut avoir un impact significatif sur la qualité de votre travail.
Codage heureux, tout le monde!
ce sera le retour de
true
(parce qu'il contient le mot Toto), et puisfalse
(parce que Toto n'est pas au début de la phrase).LastIndexOf
. Si c'est -1, alors la chaîne n'est pas trouvée, si c'est 0, alors c'est la bonne affaire et commence à la chaîne, et si il est supérieur à 0, il échoue à la dernière partie: "il doit être le seul Foo qui commence avec un capital".Si je comprends le problème correctement cette méthode devrait fonctionner.
Laissez-moi savoir si j'ai mal compris quelque chose.
Veuillez vous référer à la Chaîne.Méthode IndexOf:
http://msdn.microsoft.com/en-us/library/k8b1470s.aspx
La recherche est sensible à la casse, donc il suffit de regarder pour le mot en majuscules (Ex: "Foo"). Si IndexOf renvoie la valeur 0, alors le mot est à la première position.
Edit: C'est comment j'allais le faire (après avoir vu votre code)