如何将 StringBuffer 的最后一个字符转移到开头?

How to transfer the last character of a StringBuffer to the beginning?

我正在尝试使用 StringBuffer.insert() 将 StringBuffer 的最后一个字符转移到开头。即使我事先不知道这个词,我也希望能够做到这一点。

我尝试使用下面的 insert() 和 length() 方法传输字母,但没有成功。

    StringBuffer str3 = new StringBuffer("Colour");
    System.out.println(str3.insert(0,str3.length()));

    // output is "6Colour"

当您在位置 0 插入 str3.Length() 时,您是在该位置插入长度(作为 int)而不是 str3 的最后一个字符。

尝试使用以下代码插入字符:

StringBuffer str3 = new StringBuffer("Colour");

char lastChar = str3.charAt(str3.length()- 1);

System.out.println(str3.insert(0, lastChar));

您可能会发现此 article 有助于了解有关 StringBuffer.Insert() 的更多信息。

编辑:

正如@Nexevis 提到的,如果你想删除 StringBuffer 的最后一个字符,这个 answer 说你可以这样做:str3.setLength(Math.max(str3.length() - 1, 0)); 删除它。

此 Math.max() 确保如果字符串大小为 0,.setLength() 不会将长度设置为负数。

要将最后一个字母放在开头,我们可以使用 CharAt 找到最后一个字母并插入。

    StringBuffer str3 = new StringBuffer("Colour");

    System.out.println(str3.insert(0,str3.charAt(str3.length()-1)));

=>'r颜色

您的代码存在问题,您使用的是字符串的长度。

试试下面的代码:

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

如果要去掉最后一个字符放在字符串的开头。 'Colour' --> 'rColou'

正在生成一个新的字符串,仅用于显示例如:

StringBuffer str3 = new StringBuffer("Colour");
String s = str3.charAt(str3.length()-1)  + str3.substring(0, str3`enter code here`.length()-1);

保持相同的变量:

StringBuffer str3 = new StringBuffer("Colour");
str3.insert(0, str3.charAt(str3.length()-1));
str3.deleteCharAt(str3.length()-1);

Ps.: 不要忘记先在 str3

上测试 NULL
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;
}