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

问题描述:

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

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

你有几个问题混在一起。大致说来,是的,'str.charAt(str。length() - 1)'通常是字符串中的最后一个字符;但是考虑一下如果str为空或者null,会发生什么。 – 2011-03-02 05:47:07

+0

其工作正常。但是,palidrome检查的逻辑听起来不正确,请提一下你得到的错误。 – Zimbabao 2011-03-02 05:47:57

+0

可能重复[如何从字符串中删除最后一个字符?](http://stackoverflow.com/questions/7438612/how-to-remove-the-last-character-from-a-string) – Nateowami 2014-10-04 12:32:26

的代码:

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

输出:

last character: f 
+0

返回它作为一个字符串,而不是一个字符,但你已经知道如何做后者,而且我不清楚你在做什么。 – 2011-03-02 05:46:30

+4

如果你的字符串是空的,该怎么办? – 2015-01-26 19:19:14

+3

它会在这种情况下引发异常。你不想要它? – 2015-01-26 19:33:14

简单的解决方案是:使用

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 manupilation,因为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(); 
} 

在这里,整个字符串反转,那么不应该扭转部分被替换的子字符串。 )

尝试这种情况:

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

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

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

所产生的输出是last char = a

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

我不认为这个代码会编译(只需要小的修复),一旦你得到它编译给它一个空字符串测试,看看它是否工作。 – Knells 2016-04-05 22:32:41

+2

虽然这个答案可能是正确和有用的,但如果你[包括一些解释一起](http://meta.stackexchange.com/q/114762/159034)来解释它如何帮助解决这个问题,它是首选。如果存在导致其停止工作并且用户需要了解其曾经工作的变化(可能不相关),这在未来变得特别有用。谢谢! – Hatchet 2016-04-06 00:18:26

其他答案包含大量不必要的文本和代码。这里有两种方式来得到一个字符串的最后一个字符:

焦炭

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

字符串

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

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

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

输出应该是:

t 

快乐编码!

+1

这是与此处给出的完全相同的示例https://stackoverflow.com/a/13025371/773479 – 2017-10-03 00:47:37

+0

哎呀,没有看到。 – 2017-10-03 22:57:40

其他答案非常完整,如果您想要查找字符串的最后一个字符,则应该明确地使用它们。但是,如果你只是想使用条件(比如是最后一个字符“G”),你也可以做到以下几点:

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

,或者串

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