如何将 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;
}
我正在尝试使用 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
上测试 NULLprivate 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;
}