如果我必须首先搜索字符串中的特定单词,这将成为子字符串的起点,我怎样才能对字符串进行子字符串?
例如,我有一个类似于此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进行子串。
答案 0 :(得分:3)
您可以尝试正则表达式
Here's some information on using regular expressions in java
以下正则表达式:
video_id=(.*?)&
应该这样做。
答案 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 HttpComponentsString 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