我如何得到一个字符串的最后一个字符?

public class Main {
    public static void main(String[] args)  {
        String s = "test string";
        //char lastChar = ???
    }   
}

当前回答

String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

输出应该是:

t

编码快乐!

其他回答

代码:

public class Test {
    public static void main(String args[]) {
        String string = args[0];
        System.out.println("last character: " +
                           string.substring(string.length() - 1)); 
    }
}

java Test abcdef的输出:

last character: f
String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

输出应该是:

t

编码快乐!

public char LastChar(String a){
    return a.charAt(a.length() - 1);
}

下面是一个使用String.charAt()的方法:

String str = "India";
System.out.println("last char = " + str.charAt(str.length() - 1));

结果输出是last char = a。

简单的解决方法是:

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  char[] cs = str.toCharArray();
  char first = cs[0];
  cs[0] = cs[cs.length -1];
  cs[cs.length -1] = first;
  return new String(cs);
}

使用字符数组(注意讨厌的空字符串或空字符串参数!)

另一种解决方案使用StringBuilder(它通常用于做String操作,因为String本身是不可变的。

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);  
  char first = sb.charAt(0);
  sb.setCharAt(0, sb.charAt(sb.length()-1));
  sb.setCharAt(sb.length()-1, first);
  return sb.toString();
}

还有一种方法(更多的是为了指导而不是实际使用)是这样的:

public String frontBack(String str) {
  if (str == null || str.length() < 2) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);
  String sub = sb.substring(1, sb.length() -1);
  return sb.reverse().replace(1, sb.length() -1, sub).toString();
}

在这里,完整的字符串被反转,然后不应该反转的部分被子字符串替换。;)