如何通过首先搜索整个单词来进行子串?

时间:2013-09-13 19:36:01

标签: java substring

如果我必须首先搜索字符串中的特定单词,这将成为子字符串的起点,我怎样才能对字符串进行子字符串?

例如,我有一个类似于此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进行子串。

5 个答案:

答案 0 :(得分:3)

您可以尝试正则表达式

Here's some information on using regular expressions in java

以下正则表达式:

video_id=(.*?)&

应该这样做。

http://rubular.com/r/d24wDwk2wv

答案 1 :(得分:1)

明确回答标题:

s = s.substring(s.indexOf("word") + "word".length());

答案 2 :(得分: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方法here

答案 3 :(得分: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);

这应该可以为您提供所需的信息。

答案 4 :(得分:1)

您可以在video_id=之后的posithon和下一个&之间使用子字符串

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


其他可能更具可读性的方法是使用URLEncodedUtils

中的Apache HttpComponents
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