如果我必须首先在字符串中搜索将成为子字符串起点的特定单词,我该如何子字符串?
例如,我有一个这样的 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。
您可以在 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
在这种情况下,您将使用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);
这应该给你你正在寻找的东西。
要明确回答标题:
s = s.substring(s.indexOf("word") + "word".length());
用这个:
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
方法。