我有一个包含n个字符的java字符串。
如何从该字符串中提取最后几个字符?
我在网上发现这段代码提取了前几个,但我不明白它所以我不能修改它。
任何人都可以帮我吗?
String upToNCharacters = s.substring(0, Math.min(s.length(), n));
答案 0 :(得分:2)
这段代码完全与你想要的完全相反。现在让我们看看为什么以及如何修改它。
您可以按照以下方式修改代码,以执行您想要的操作:
String lastNchars = s.substring( Math.max(0, s.length()-n));
根据official documentation,Java String
类有一个名为substring()
的特殊方法。
该方法的签名如下(带过载):
public String substring(int beginIndex, int endIndex))
public String substring(int beginIndex)
第一种方法接受2个参数作为输入:
beginIndex
:子字符串的开头索引,包含。endIndex
:子字符串的结束索引,独占。第二个重载会自动将endIndex
视为字符串的长度,从而返回"最后一部分"
两种方法都会根据刚才描述的输入参数返回 new String
Object实例。
如何从字符串中选取正确的子字符串?提示是按字母顺序考虑字符串:字符数组。因此,如果你有字符串Hello world
,你可以在逻辑上将其视为:
[H][e][l][l][o][ ][w][o][r][l][d]
[0]...............[6]......[9][10]
如果您选择仅提取字符串world
,那么您可以调用substring
方法给出正确的"数组"索引(记住endIndex
是独占的!):
String s = "Hello world";
s.substring(6,11);
在您提供的代码段中,您将提供一个特殊的endIndex:
Math.min(s.length(), n);
考虑到字符串的长度(以避免超出限制条件),这完全取决于 n 字符索引。
我们在这个答案的最开始做的只是调用方法并为它提供子字符串的开始索引,如果选择了错误的索引,则考虑可能的溢出条件。
请注意,任何String
对象实例都可以利用此方法,请查看this示例,例如:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
正如你所看到的那样,"abc"
当然有substring
方法!
答案 1 :(得分:1)
尝试,
String upToNCharacters = s.substring(s.length()-lastCharNumber);
答案 2 :(得分:0)
看看substring documentation,基本上它是什么,它返回一个字符串的子字符串,其中第一个参数指定的索引和第二个参数的结尾
因此,要获取最后几个字符,请将begin index和end index修改为所需的值。此方法还有另一个版本,它只接受一个参数,只是开始索引,这可能对您有用。
答案 3 :(得分:0)
String lastNchars = s.substring(s.length()-n);
答案 4 :(得分:0)
其中一个String.substring()重载需要一个参数 - 起始索引的索引。从那以后,您可以轻松实现您的功能:
String lastFew(String s, int number) {
if (number > s.length()) {
throw new IllegalArgumentException("The string is too short!");
} else return s.substring(s.length()-number);
}