如何获取字符串的最后一个字符?


181

如何获取字符串的最后一个字符?

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

2
您有几个问题混在一起。广泛地讲,是的,str.charAt(str.length() - 1)通常是字符串中的最后一个字符。但请考虑如果str为空或为null会发生什么情况。
万斯·特立独行

它的工作正常。但是,回文检查的逻辑听起来不正确,还请提及您遇到的错误是什么。
Zimbabao 2011年

Answers:


243

代码:

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

2
以字符串而不是字符的形式返回它,但是您已经知道该怎么做,并且我不清楚您要做什么。
jcomeau_ictx 2011年

8
如果您的字符串为空怎么办?
丹麦汗

4
在这种情况下,它将引发异常。你不想要吗?
jcomeau_ictx

问题要求输入一个字符-这将返回一个长字符串。如果使用charAt()substring()
安德鲁

1
安德鲁,如果您在编辑之前回头看原始问题,您会发现OP已经尝试过charAt(),而这并不是她想要的。这就是像SO这样的Wiki媒介所面临的问题之一,这些问题是一个移动的目标,因此有时答案可能看起来很愚蠢。
jcomeau_ictx

96

这是使用方法String.charAt()

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

结果输出为last char = a


1
如果要对字符串中的数字进行计算,请务必小心,因为char值与文字数字完全不同,并且您的数学结果将不起作用。
JesseBoyd

32

其他答案包含许多不必要的文本和代码。这是获取字符串最后一个字符的两种方法:

烧焦

char lastChar = myString.charAt(myString.length() - 1);

String lastChar = myString.substring(myString.length() - 1);

32

其他答案非常完整,如果要查找字符串的最后一个字符,则一定要使用它们。但是,如果您只是尝试使用条件语句(例如,最后一个字符'g'),则还可以执行以下操作:

if (str.endsWith("g")) {

或者,字符串

if (str.endsWith("bar")) {

非常有用,而且很关键。
水彩画

4

试试这个:

if (s.charAt(0) == s.charAt(s.length() - 1))

这个答案是错误的。它仅检查第一个和最后一个字符是否相同。
水彩画

2

简单的解决方案是:

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);
}

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

另一种解决方案使用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();
}

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


2
public String lastChars(String a) {
if(a.length()>=1{
String str1 =a.substring(b.length()-1);
}
return str1;
}

我不认为此代码可以编译(尽管只需要进行一些小的修复),一旦您将其编译,就对一个空字符串进行测试以查看其是否有效。
Knells

2
虽然此答案可能是正确且有用的,但如果您在其中包含一些解释以说明它如何帮助解决问题,则最好使用该解释。如果发生更改(可能不相关)导致它停止工作,并且用户需要了解它曾经如何工作,那么这在将来特别有用。谢谢!
Hatchet



2

这是我用来获取字符串的最后xx的方法:

public static String takeLast(String value, int count) {
    if (value == null || value.trim().length() == 0) return "";
    if (count < 1) return "";

    if (value.length() > count) {
        return value.substring(value.length() - count);
    } else {
        return value;
    }
}

然后像这样使用它:

String testStr = "this is a test string";
String last1 = takeLast(testStr, 1); //Output: g
String last4 = takeLast(testStr, 4); //Output: ring

1
 public char lastChar(String s) {
     if (s == "" || s == null)
        return ' ';
    char lc = s.charAt(s.length() - 1);
    return lc;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.