字符交换

Iva*_*nin 0 java string replace char

我正在尝试交换字符串中的第一个和最后一个字符,所以我所做的是我能够检索它的第一个和最后一个字符,但现在很难将它们放在一起:

   String name="pera";
   char[] c = name.toCharArray();
   char first = c[0];
   char last = c[c.length-1];
   name.replace(first, last);
   name.replace(last, first);
   System.out.println(name);  
Run Code Online (Sandbox Code Playgroud)

虽然我得到变量'first'是"p"的值,而变量'last'是"a"的值,但这些方法replace()没有出现有效的结果,因为名称保持不变.有没有人知道如何完成这个?

Arn*_*lle 7

1)字符串在Java中是不可变的.所以name.replace(first, last)不会修改name但会返回一个新的String.

2) String#replace(char oldChar,char newChar)newChar替换此字符串中出现的所有oldChar.

例如:

System.out.println("aaaddd".replace("a","d"));
Run Code Online (Sandbox Code Playgroud)

会给 :

dddddd
Run Code Online (Sandbox Code Playgroud)

可能的解决方案:如果将您转换String为a char[],则可以轻松交换字符:

public static String inverseFirstAndLast(String str){
  char[] c = str.toCharArray();
  Character temp = c[0];
  c[0] = c[c.length-1];
  c[c.length-1]=temp;
  return new String(c);
}
Run Code Online (Sandbox Code Playgroud)