J'essaye de transférer le dernier caractère d'un StringBuffer au début en utilisant StringBuffer.insert (). Je veux pouvoir le faire même si je ne connais pas le mot à l'avance.
J'ai essayé de transférer la lettre en utilisant les méthodes insert () et length () ci-dessous, mais cela n'a pas fonctionné. P >
StringBuffer str3 = new StringBuffer("Colour"); System.out.println(str3.insert(0,str3.length())); // output is "6Colour"
5 Réponses :
Lorsque vous insérez str3.Length () à la position 0, vous insérez la longueur, sous la forme d'un entier, à cette position au lieu du dernier caractère de str3.
Essayez le code ci-dessous pour insérer le caractère à la place:
StringBuffer str3 = new StringBuffer("Colour"); char lastChar = str3.charAt(str3.length()- 1); System.out.println(str3.insert(0, lastChar));
Vous trouverez peut-être cet article a> utile pour en savoir plus sur StringBuffer.Insert ().
Modifier:
Comme @Nexevis l'a mentionné si vous souhaitez supprimer le dernier caractère du StringBuffer ceci answer dit que vous pouvez faire ceci: str3.setLength (Math.max (str3.length () - 1, 0)); code > pour le supprimer.
Ce Math.max () garantit que .setLength () ne définira pas la longueur comme un nombre négatif si la taille de la chaîne est 0.
Il dit "transfert", dans votre scénario, vous le copiez et le mettez à l'avant, ce qui le fait au début et à la fin, peut-être qu'il veut supprimer le dernier personnage? Ce n'est cependant pas le plus clair. Par exemple, "Color" serait "rColou" et non "rColour"
Pour amener la dernière lettre au début, nous pouvons utiliser le CharAt pour trouver la dernière lettre et faire l'insertion.
StringBuffer str3 = new StringBuffer("Colour"); System.out.println(str3.insert(0,str3.charAt(str3.length()-1)));
=> 'rColour
Le problème avec votre code est que vous utilisez la longueur de la chaîne.
Essayez le code ci-dessous:
String str = "Colour"; // Some user String StringBuffer str3 = new StringBuffer(str); char lastChar = str3.charAt(str3.length()- 1); // Get The last Character str3 = str3.insert(0, lastChar); // Insert last char to firs index str3 = str3.deleteCharAt(str3.length - 1); // Delete the last char System.out.println(str3); // Print the string
Si vous souhaitez supprimer le dernier caractère et le mettre au début de la chaîne. 'Color' -> 'rColou'
Génération d'une nouvelle chaîne, uniquement pour l'affichage par exemple:
StringBuffer str3 = new StringBuffer("Colour"); str3.insert(0, str3.charAt(str3.length()-1)); str3.deleteCharAt(str3.length()-1);
Garder la même variable:
StringBuffer str3 = new StringBuffer("Colour"); String s = str3.charAt(str3.length()-1) + str3.substring(0, str3`enter code here`.length()-1);
Ps.: N'oubliez pas de tester NULL d'abord sur str3
private static String transferLastCharToFirstPosition(String input) { if (input == null || input.isEmpty() || input.length() == 1) return null; char lastChar = input.charAt(input.length() - 1); //get last char input = input.substring(0, input.length() - 1); //remove the last char input = String.valueOf(lastChar).concat(input); // put the last char on first place return input; }