如何在Java中交换字符串的第一个和最后一个字符?

9 java

我在夏天练习尝试变得更好,我对以下内容有点困惑:

http://www.javabat.com/prob/p123384

给定一个字符串,返回一个新的字符串,其中第一个和最后一个字符已被交换.


例子:

frontBack("code") ? "eodc"
frontBack("a") ? "a"
frontBack("ab") ? "ba"
Run Code Online (Sandbox Code Playgroud)

码:

public String frontBack(String str) 
{
    String aString = "";

    if (str.length() == 0){
        return "";
    }

    char beginning = str.charAt(0);
    char end = str.charAt(str.length() - 1);

    str.replace(beginning, end);
    str.replace(end, beginning);

    return str;
}
Run Code Online (Sandbox Code Playgroud)

mnu*_*zzo 9

字符串可以分成一组字符,可以使用字符数组.有关String对象的更多详细信息,请转至Java API并单击左下方窗格中的String.该窗格按字母顺序排序.

编辑:由于有些人更加彻底,我想我会提供更多细节.使用String的.toCharArray()方法创建一个char数组.获取第一个元素并将其存储在char中,将第一个元素与最后一个元素交换,并将存储在char中的元素放入数组的最后一个元素中,然后说:

String temp = new String(charArray);
Run Code Online (Sandbox Code Playgroud)

并返回.这假设charArray是你的字符数组.


coo*_*ird 7

String.replace我建议使用该String.substring方法来获取排除第一个和最后一个字母的字符,然后连接beginningend字符,而不是使用该方法.

此外,该String.replace方法将替换所有出现的指定字符,并返回String具有所述替换的新内容.由于上面的代码中没有获取返回,因此String.replace这里的调用确实没有太大作用.

这是因为String在Java中是不可变的,因此,该replace方法不能对原始进行任何更改String,str在这种情况下这是变量.


另外String,对于长度为1的s ,这种方法不能很好地工作.使用上面的方法,使用长度为1 String.substring的源调用String会导致a StringIndexOutOfBoundsException,因此也需要处理作为一个特例,如果采取上述方法.

坦率地说,这个方法是在indyK1ng的答案中提出,其中char[]String初始和结束字符的简单交换中获得,然后String通过修改char[]开始听起来更加愉快.