【问题标题】: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 会发生什么。
  • 它工作正常。但是回文检查的逻辑听起来不正确,还请说明您遇到的错误是什么。

标签: java string substring


【解决方案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
      

      编码愉快!

      【讨论】:

      【解决方案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();
          }
          

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

          【讨论】:

            猜你喜欢
            • 2011-08-17
            • 1970-01-01
            • 2021-02-11
            • 2011-02-10
            • 2013-07-06
            • 2011-11-18
            • 1970-01-01
            相关资源
            最近更新 更多