getBetween две строки на конкретной странице? - PullRequest
0 голосов
/ 21 марта 2012

В настоящее время у меня есть функция getBetween следующим образом:

public static String getBetween(String haystack, String pre, String post) {
    Pattern pattern = Pattern.compile(pre+"(.+?)"+post);
    Matcher matcher = pattern.matcher(haystack);
    if(matcher.find())
        return haystack.substring(matcher.start(1),matcher.end(1));
    return "No match could be found.";
}

И когда я пытаюсь получить getBetween две строки, в которых есть "s", она не будет работать.

Как:

System.out.println(getBetween(strHTML, "href="/objects.phtml?type=inventory">", "</a> <span style="font-weight: normal;">"));

Могу ли я проанализировать две строки, чтобы они работали с "s", и все еще можно было работать с getBetween ()?

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Если я правильно вас понимаю, вы хотите, чтобы где-то в середине strHTML был напечатан текст? Проблема в том, что ваши pre и post компилируются, я думаю, что html имеет другое значение, чем значение в Java Pattern. Поэтому вам нужно будет процитировать их.

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class GetBetween
{

    public static String getBetween(String haystack, String pre, String post)
    {
        Pattern pattern = Pattern.compile( Pattern.quote(pre) + "(.+?)" + Pattern.quote(post));
        Matcher matcher = pattern.matcher(haystack);

        if (matcher.find())
        {
            return haystack.substring(matcher.start(1),matcher.end(1));
        }

        return "No match could be found.";
    }


    /**
     * @param args
     */
    public static void main(String[] args)
    {
        String strHTML = "href=\"/objects.phtml?type=inventory\">\"s</a><span style=\"font-weight: normal;\">";

        System.out.println(getBetween(strHTML, "href=\"/objects.phtml?type=inventory\">", "</a><span style=\"font-weight: normal;\">"));

       strHTML = "href=\"/objects.phtml?type=inventory\"></a><span style=\"font-weight: normal;\">";

        System.out.println(getBetween(strHTML, "href=\"/objects.phtml?type=inventory\">", "</a><span style=\"font-weight: normal;\">"));
    }

}
0 голосов
/ 21 марта 2012

Попробуйте что-то вроде этого:

int startIndex = haystack.indexOf(pre);
// handle the case where startIndex is -1
int endIndex = haystack.indexOf(startIndex, post);
// handle the case where endIndex is -1
return haystack.substring(startIndex, endIndex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...