string.substring(int start,int end)doesnwt按原样工作

时间:2015-02-08 15:30:41

标签: android

我试图在不使用split方法的情况下从字符串中拆分子字符串,如下所示:

    private String getSequence(String what, String start, String end){
        return what.substring(what.indexOf(start), what.indexOf(end));
    }

例如,我使用字符串"<_id 2211 _id>",如下所示:

  getSequence("<_id 2211 _id>","<_id 2211 _id>".indexOf("<_id ","<_id 2211 _id>".indexOf(" _id>")  

我的预期输出为" 2211 ",但实际输出为"<_id 2211 "

2 个答案:

答案 0 :(得分:1)

你需要改变你的回归

  return what.substring(what.indexOf(start), what.indexOf(end));

return what.substring(what.indexOf(start) + start.length(), what.indexOf(end));

因为indexOf会在你的情况下返回0,因为它找到匹配的字符串“&lt; _id”

请注意:确保如果你的字符串中不存在模式,那么index将返回-1并且可能抛出StringIndexOutOfBoundException或者可能会给出意想不到的结果,现在你将进行添加。所以你应该事先验证它,indexOf都不会给你-1。

答案 1 :(得分:0)

将子字符串的第一个参数更改为what.indexOf(start) + start.lenght()。我会留给你弄清楚这种溶液是如何起作用的。