有 Java 编程相关的问题?

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

在Java子字符串中跳过起始和结束字符索引的方法?

我想看看是否有一种方法可以跳过子字符串函数中的开始索引和结束索引,因为子字符串传统上包括开始索引,不包括结束索引。 比如

String str="Hello 42 World!";
int hello=str.indexOf("Hello");
int world=str.indexOf("World!");
int fortytwo=customSubstringMethod(str,hello,world);//should be 42.

任何关于如何做到这一点的见解都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    试试这个

    private static String subStringMethod(String value,String start, String end)
    {
        return value.substring(value.indexOf(start)+start.length(), value.indexOf(end)).trim();
    }
    
  2. # 2 楼答案

    Java API中没有这样的方法,但您可以创建一个包装器来实现这一点:

    public static String customSubstring(String str, int start, int end) {
        return str.substring(start+1,end);
    }
    

    顺便说一句,要注意indexOf,它总是返回出现的第一个字符的索引:

    String str="Hello 42 World!";
    int hello=str.indexOf("Hello"); //returns 0
    int world=str.indexOf("World!"); // returns 9
    int fortytwo=customSubstring(str,hello,world);//returns "ello 42 "
    

    因此,对于第一个索引,您应该使用:

    String h="Hello";
    int hello=str.indexOf(h)+h.length; 
    
  3. # 3 楼答案

    无需检查错误情况的快速且肮脏的解决方案:

    public static void main(String[] args) {
        String str="Hello 42 World!";
        System.out.println(customSubstringMethod(str, "Hello", "World!"));
    }
    
    private static String customSubstringMethod(String str, String start, String stop) {
        return str.substring(str.indexOf(start) + start.length(), str.indexOf(stop));
    }
    

    除此之外,您还需要了解前缀字符串的索引。长度也是必需的