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

Posted

技术标签:

【中文标题】如何获取字符串的最后一个字符?【英文标题】:How do I get the last character of a string? 【发布时间】:2011-07-07 00:48:31 【问题描述】:

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

【问题讨论】:

你有几个问题混在一起了。从广义上讲,是的,str.charAt(str.length() - 1) 通常是字符串中的最后一个字符;但考虑一下如果 str 为空或 null 会发生什么。 它工作正常。但是回文检查的逻辑听起来不正确,还请说明您遇到的错误是什么。 How to remove the last character from a string? 的可能重复项 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

代码:

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

【讨论】:

将它作为字符串返回,而不是字符,但你已经知道如何做后者,我不清楚你在追求什么。 如果你的字符串为空怎么办? 在这种情况下会引发异常。你不想吗? 问题要求输入一个字符 - 这将返回一个字符长的字符串。应该使用charAt() 而不是substring() 安德鲁,如果您在编辑之前回顾原始问题,您会发现 OP 已经尝试过 charAt() 并且这不是她想要的。这是类似 wiki 的媒体(例如 SO)的问题之一,这些问题是一个移动的目标,因此有时答案可能看起来很愚蠢。【参考方案3】:
 public char lastChar(String s) 
     if (s == "" || s == null)
        return ' ';
    char lc = s.charAt(s.length() - 1);
    return lc;

【讨论】:

【参考方案4】:

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

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

结果输出为last char = a

【讨论】:

如果您想对字符串中的数字进行计算,请务必小心,因为 char 值与文字数字完全不同,您的数学结果将不起作用。【参考方案5】:

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

if (str.endsWith("g")) 

或者,字符串

if (str.endsWith("bar")) 

【讨论】:

请注意,如果参数是空字符串或等于由 equals(Object) 方法确定的此 String 对象,则结果将为 true。【参考方案6】:
String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

输出应该是:

t

编码愉快!

【讨论】:

这与此处给出的示例完全相同 ***.com/a/13025371/773479【参考方案7】:
public char LastChar(String a)
    return a.charAt(a.length() - 1);

【讨论】:

【参考方案8】:

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

字符

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

字符串

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

【讨论】:

【参考方案9】:
public String lastChars(String a) 
if(a.length()>=1
String str1 =a.substring(b.length()-1);

return str1;

【讨论】:

我不认为这段代码会编译(不过只需要小修复),一旦你得到它编译给它一个空字符串测试看看它是否有效。 虽然此答案可能是正确且有用的,但如果您 include some explanation along with it 解释它如何帮助解决问题,则最好。如果有变化(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。谢谢!【参考方案10】:

试试这个:

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

【讨论】:

这个答案是错误的。它只检查第一个和最后一个字符是否相同。【参考方案11】:

简单的解决方案是:

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(它通常用于进行字符串操作,因为字符串本身是不可变的。

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

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

【讨论】:

以上是关于如何获取字符串的最后一个字符?的主要内容,如果未能解决你的问题,请参考以下文章

Python如何获取字符串中最后一个特殊字符后的字符串

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

sap 如何获取字符串最后一位

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

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

Bash - 如何获取位置参数的最后一个字符?