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



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

我尝试使用下面的 insert(( 和 length(( 方法传输字母,但它不起作用。

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

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

请尝试以下代码插入字符:

StringBuffer str3 = new StringBuffer("Colour");
char lastChar = str3.charAt(str3.length()- 1);
System.out.println(str3.insert(0, lastChar));

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

编辑:

正如@Nexevis提到的,如果你想删除StringBuffer的最后一个字符,这个答案说你可以这样做: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
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;
}
如果要

删除最后一个字符并将其放在字符串的开头。"颜色" --> "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

最新更新