如何获得子包的非包含索引?

时间:2015-11-06 06:07:58

标签: java string

假设我有一个字符串String s = "0123456789t:9876543210" 如何在"t:"之后立即得到索引(即索引12)?

是否有内置方式,还是我坚持使用s.substring(s.indexOf("t:")+2);

具体来说,我想要任何令牌长度的解决方案。我的令牌可能是t:,也可能很容易test:。无论令牌本身如何,有没有办法在我搜索的任何令牌之后立即动态获取索引?

3 个答案:

答案 0 :(得分:2)

您可以像这样使用IndexOf:

s.indexOf(s + ":")+2

答案 1 :(得分:2)

这是查找索引的正确方法。

int indexOf(String str)

来自Javadocs,

  

返回第一次出现的字符串中的索引   指定的子字符串。返回的整数是最小值k   的是:

 this.startsWith(str, k)

为了使其具有动态性,请使用此类结构。

public static void main(String[] args) {
        String s = "0123456789t:9876543210";
        System.out.println(getIndex("t:", s));
        s = s.substring(s.indexOf("t:") + 2);
        System.out.println(s);
    }

    private static int getIndex(String searchedText, String inputText) {
        return inputText.indexOf(searchedText) + searchedText.length();
    }

<强>输出

12
9876543210

答案 2 :(得分:0)

为什么不把它全部模块化,有一个字符串的arraylist,所有命令都可以做到:

    ArrayList<String>  al = new ArrayList<String>();
    String s = "123456789t:987654321";
    al.add("t:");//this is where you add your cases

    for(String c:al){
         System.out.println(s.substring(s.indexOf(c) + c.length));
     }

那样的情况下,案件的长度不能搞乱b / c它是字符串类的一部分