0

如果我必须首先在字符串中搜索将成为子字符串起点的特定单词,我该如何子字符串?

例如,我有一个这样的 url http://www.youtube.com/get_video_info?html5=1&video_id=fn45T6k5JzA&cpn=SS3mhNaZwOE7WnYl&ps=native&el=embedded&hl=en_US&sts=15956&width=500&height=400&c=web&cver=html5,我需要从中提取视频 ID。

4

5 回答 5

3

你可以试试正则表达式

这里有一些关于在java中使用正则表达式的信息

以下正则表达式:

video_id=(.*?)&

应该这样做。

http://rubular.com/r/d24wDwk2wv

于 2013-09-13T19:39:14.033 回答
1

您可以在 posithon aftervideo_id=和 next之间使用子字符串&

String link = "http://www.youtube.com/get_video_info?html5=1&video_id=fn45T6k5JzA&cpn=SS3mhNaZwOE7WnYl&ps=native&el=embedded&hl=en_US&sts=15956&width=500&height=400&c=web&cver=html5";

int start = link.indexOf("video_id") + "video_id".length() + 1; // +1 to include position of `=`
int end = link.indexOf("&", start);
String value = link.substring(start, end);

System.out.println(value);

输出:fn45T6k5JzA


其他可能更易读的方法是使用来自Apache HttpComponents的URLEncodedUtils

String link = "http://www.youtube.com/get_video_info?html5=1&video_id=fn45T6k5JzA&cpn=SS3mhNaZwOE7WnYl&ps=native&el=embedded&hl=en_US&sts=15956&width=500&height=400&c=web&cver=html5";

List<NameValuePair> parameters = URLEncodedUtils.parse(link,
        Charset.forName("UTF-8"));

for (NameValuePair nvp : parameters) {
    if (nvp.getName().equals("video_id"))
        System.out.println(nvp.getValue());
}

输出:fn45T6k5JzA

于 2013-09-13T20:04:56.647 回答
1

在这种情况下,您将使用String.indexOf(String toIndex),这将给出子字符串中第一个字符的索引。如果你这样做:

 String video = "http://www.youtube.com/get_video_info?html5=1&video_id=fn45T6k5JzA&cpn=SS3mhNaZwOE7WnYl&ps=native&el=embedded&hl=en_US&sts=15956&width=500&height=400&c=web&cver=html5";
 String data = video.substring(video.indexOf("video_id=") + 9);

这应该给你你正在寻找的东西。

于 2013-09-13T19:47:55.717 回答
1

要明确回答标题:

s = s.substring(s.indexOf("word") + "word".length());
于 2013-09-13T19:41:28.973 回答
1

用这个:

String url="http://www.youtube.com/get_video_info?html5=1&video_id=fn45T6k5JzA&cpn=SS3mhNaZwOE7WnYl&ps=native&el=embedded&hl=en_US&sts=15956&width=500&height=400&c=web&cver=html5";
String subData=url.substring(url.indexOf("video_id=")+"video_id=".length(),url.indexOf("&",url.indexOf("video_id="))); // outputs fn45T6k5JzA

在这里查看不同的变化string#indexOf方法。

于 2013-09-13T19:41:44.970 回答