J'essaie d'imprimer une aline avec la première instance 'C' 'C' 'D' ou "D" enlevé. Cependant, je suis limité à l'utilisation de l'index de la chaîne, du charat, de la longueur, de la comparète, de la TUPPERCASE, du TolowerCase, de la garniture, des égaux, des méthodes EqualSignorecase et de sous-chaîne. Supposons que vous puissiez entrer n'importe quelle chaîne vous aimez.
J'ai réalisé enlever "C". Cependant, s'il y a une "D" avant le "C", il enlève toujours le "C". J'ai essayé d'établir des indices des lettres. J'ai essayé d'utiliser si des déclarations ainsi que de désignées si des déclarations dans les limites et pour les boucles. Les résultats sont les mêmes. P>
int c = aLine.indexOf('c'); int upperC = aLine.indexOf('C'); int d = aLine.indexOf('d'); int upperD = aLine.indexOf('D'); for (int i = 0; i < aLine.length(); i++) { if (c >= 0 || upperC >= 0 || d >= 0 || upperD >= 0) { if (c >= 0) { String string1 = aLine.substring(0, c); String string2 = aLine.substring(c + 1, length); System.out.println(string1 + string2); break; } else if (upperC >= 0) { String string1 = aLine.substring(0, upperC); String string2 = aLine.substring(upperC + 1, length); System.out.println(string1 + string2); break; } else if (d >= 0) { String string1 = aLine.substring(0, d); String string2 = aLine.substring(d + 1, length); System.out.println(string1 + string2); break; } else if (upperD >= 0) { String string1 = aLine.substring(0, upperD); String string2 = aLine.substring(upperD + 1, length); System.out.println(string1 + string2); break; } else { System.out.println("The original String has no leading or trailing whitespace."); break; }
4 Réponses :
Vous devez comparer Wich One est le premier. P>
permet de dire que votre mot est "dcvsmarvel" p>
Dans ce cas, D est 0 et C est 1. P>
si insté de Si (C> = 0) { p>
Il devrait inclure la condition p>
si (c> = 0 && (C espère qu'il aide p>
Une autre solution plus simple consiste à vérifier chaque char de la chaîne dans l'ordre et une fois que vous avez trouvé un qui remplit une des conditions, faites la chose et la pause. Pour cela, n'utilisez pas l'index du début p>
Je garderais cela simple: notes: p>
impression code>, pas
println code> li>
Merci @ilya Bursov. Ya je faisais trop. Ceci est beaucoup plus rationnel et efficace.
Pour éviter de rechercher des majuscules et des minuscules, vous devez créer une copie minuscule de aline code> - vous ne vous inquiétez que du type de lettre, pas de la capitalisation de la lettre.
boolean skipped = false;
String result = "";
for(int i = 0; i < lowered.length(); i++) {
char letter = lowered.charAt(i);
if(!skipped && (letter == 'c' || letter = 'd')) {
skipped = true;
} else {
result += letter;
}
}
Boucle sur chaque personnage, ajoutant chaque caractère à un
stringbuilder code> jusqu'à ce que vous rencontriez un
C code>,
d code>,
c code>, ou
d code>. Une fois que vous le trouvez, vous pouvez ignorer cet index via
Continuer code> et permettre à la boucle d'ajouter le reste des caractères. Le
stringbuilder code> contiendra ensuite la chaîne d'origine, mais avec la première occurrence de majuscules / minuscules C ou D supprimée.
StringBuilder Code> est uniquement là pour réduire la création d'objets - vous pouvez le faire sans
stringbuilder code> en concaténant simplement.
Merci pour votre réponse. Mais je n'ai pas été autorisé à utiliser StressBuilder.
Vous n'avez pas à utiliser
stringbuilder code> - c'est juste pour l'optimisation, pas pour faciliter. Vous pouvez simplement
+ = code> pour le concaténer à une chaîne existante. C'est juste que tout temps vous concaténate, vous sont i> Création d'un
StringBuilder CODE>, donc techniquement, votre code utilise déjà
stringbuilder code>. Cependant, ma suggestion peut être facilement réalisée sans explicitement en utilisant un
stringbuilder code>.