1
votes

Comment transférer le dernier caractère d'un StringBuffer au début?

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"


0 commentaires

5 Réponses :


0
votes

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.


1 commentaires

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"



0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes
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;
}

0 commentaires