如何获取字符串的最后一个字符?
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();
这里将完整的字符串反转,然后将不应该反转的部分替换为子字符串。 ;)
【讨论】:
以上是关于如何获取字符串的最后一个字符?的主要内容,如果未能解决你的问题,请参考以下文章