有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从字符串中获取最后几个字符

我有一个包含n个字符的java字符串

如何从该字符串中提取最后的几个字符

我在网上找到了这段代码,它提取了前几段代码,但我不理解它,所以我无法修改它

有人能帮我吗

String upToNCharacters = s.substring(0, Math.min(s.length(), n));

共 (5) 个答案

  1. # 1 楼答案

    一根绳子。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);
     }
    
  2. # 2 楼答案

    看看substring documentation,它基本上是返回调用它的字符串的子字符串,其中来自第一个参数指定的索引的子字符串和结束于第二个参数

    因此,要获得最后几个字符,请将开始索引和结束索引修改为所需的值。此方法还有另一个版本,它只接受一个参数,即begin索引,这可能对您有用

  3. # 3 楼答案

    试试看

    String upToNCharacters = s.substring(s.length()-lastCharNumber);
    
  4. # 4 楼答案

    这段代码与您想要的正好相反。现在让我们看看为什么以及如何修改它

    快速解决方案

    您可以按如下方式修改代码以执行所需操作:

     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个参数作为输入:

    1. beginIndex:子字符串的开始索引,包含
    2. endIndex:子字符串的结束索引,独占

    第二重载将自动考虑字符串的长度为{{< CD4}},从而返回“最后一部分”

    这两种方法都根据刚才描述的输入参数返回一个新的对象实例

    如何从字符串中提取正确的子字符串?提示是按字符串的原样思考:一个字符数组。因此,如果您有字符串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);
    

    考虑到字符串的长度,这完全取决于nth char索引(以避免越界条件)

    在这个答案的开头,我们所做的只是调用这个方法,并为它提供子字符串的开始索引,同时考虑到如果您选择了错误的索引,可能会出现溢出情况

    请注意,任何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方法

  5. # 5 楼答案

    String lastNchars = s.substring(s.length()-n);