0

「 http://news.google.com/?ned=us&topic=t 」の「?ned=us&topic=t」の部分をコピーする方法を知りたいです。基本的には、URLのパス、または「.com」以降の部分をコピーしたい。どうすればいいですか?

public class Example  {
public static String url = "http://news.google.com/?ned=us&topic=t";
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
            driver.get(url);
            WebElement reportCln=driver.findElement(By.id("id_submit_button"));
            String path=driver.getCurrentUrl();
            System.out.println(path);
}
}
4

3 に答える 3

2

java.net.URLクラスとそのメソッドを確認する必要がgetPath()ありgetQuery()ます。

@Test
public void urls() throws MalformedURLException {
    final URL url = new URL("http://news.google.com/?ned=us&topic=t");

    assertEquals("ned=us&topic=t", url.getQuery());
    assertEquals("?ned=us&topic=t", "?" + url.getQuery());
    assertEquals("/", url.getPath());
}

正規表現は楽しいですが、IMO の方が理解しやすいです。

于 2013-06-19T21:50:34.203 に答える
1

正規表現を使用して、必要な部分を抽出できます。

String txt = "http://news.google.com/?ned=us&topic=t";

String re1 = "(http:\\/\\/news\\.google\\.com\\/)"; // unwanted part
String re2 = "(\\?.*)"; // wanted part

Pattern p = Pattern.compile(re1 + re2, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
if (m.find())
{
    String query = m.group(2);
    System.out.print(query);
}
于 2013-06-19T21:53:10.430 に答える
1

これを試して:

String request_uri = null;
String url = "http://news.google.com/?ned=us&topic=t";

if (url.startsWith("http://") {
    request_uri = url.substring(7).split("/")[1];
} else {
    request_uri = url.split("/")[1];
}

System.out.println (request_uri); // prints: ?ned=us&topic=t

クエリ文字列のみに関心がある場合、つまりgoogle.com/search?q=key+words無視したい場合は、直接search?分割するだけです?

// prints: q=key+words
System.out.println ("google.com/search?q=key+words".split("\\?")[0]);
于 2013-06-19T21:40:09.127 に答える