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

时间:2014-04-04 07:26:16

标签: java

我正在尝试查看是否有一种方法可以跳过两者子字符串函数中的开始和结束索引,因为substring传统上包含结束的开始和排除指数。 例如,

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 个答案:

答案 0 :(得分: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));
}

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

答案 1 :(得分:0)

试试这个,

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

答案 2 :(得分:-1)

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;