我有一个字符串:“这是一个URL http://www.google.com/MyDoc.pdf,应该使用”
我只需要提取从http开始并以pdf结尾的URL: http://www.google.com/MyDoc.pdf
String sLeftDelimiter = "http://";
String[] tempURL = sValueFromAddAtt.split(sLeftDelimiter );
String sRequiredURL = sLeftDelimiter + tempURL[1];
这会将输出显示为“应使用的http://www.google.com/MyDoc.pdf”
需要帮助。
答案 0 :(得分:11)
这类问题是正则表达式的用法:
Pattern findUrl = Pattern.compile("\\bhttp.*?\\.pdf\\b");
Matcher matcher = findUrl.matcher("This is a URL http://www.google.com/MyDoc.pdf which should be used");
while (matcher.find()) {
System.out.println(matcher.group());
}
正则表达式解释说:
\b
在“http”之前有一个单词边界(即xhttp不匹配)http
字符串“http”(请注意,这也与“https”和“httpsomething”匹配).*?
任意字符(.
)任意次(*
),但尝试使用最少量的字符(?
)\.pdf
文字字符串“.pdf”\b
在“.pdf”之后有一个单词边界(即.pdfoo不匹配)如果您只想匹配http和https,请尝试在字符串中使用此代替http
:
https?\:
- 这匹配字符串http,然后是可选的“s”(在s之后由?
表示)然后是冒号。答案 1 :(得分:1)
为什么不使用 startsWith(“http://”)和 endsWith(“。pdf”) String类的方法。
该方法都返回布尔值值,如果两者都返回 true ,那么您的条件成功,否则您的条件失败。
答案 2 :(得分:1)
试试这个
String StringName="This is a URL http://www.google.com/MyDoc.pdf which should be used";
StringName=StringName.substring(StringName.indexOf("http:"),StringName.indexOf("which"));
答案 3 :(得分:0)
您可以在此处使用Regular Expression
电源。
首先,您必须在原始字符串中找到Url
,然后删除其他部分。
以下代码显示了我的建议:
String regex = "\\b(http|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
String str = "This is a URL http://www.google.com/MyDoc.pdf which should be used";
String[] splited = str.split(regex);
for(String current_part : splited)
{
str = str.replace(current_part, "");
}
System.out.println(str);
此代码段可以使用任何模式检索任何字符串中的任何网址。
您无法将自定义协议(例如https
)添加到上述正则表达式中的协议部分。
我希望我的回答可以帮助你;)
答案 4 :(得分:0)
public static String getStringBetweenStrings(String aString, String aPattern1, String aPattern2) {
String ret = null;
int pos1,pos2;
pos1 = aString.indexOf(aPattern1) + aPattern1.length();
pos2 = aString.indexOf(aPattern2);
if ((pos1>0) && (pos2>0) && (pos2 > pos1)) {
return aString.substring(pos1, pos2);
}
return ret;
}
答案 5 :(得分:0)
您可以将String.replaceAll与捕获组和后向引用一起使用,以获得非常简洁的解决方案:
String input = "This is a URL http://www.google.com/MyDoc.pdf which should be used";
System.out.println(input.replaceAll(".*(http.*?\\.pdf).*", "$1"));
以下是正则表达式的细分:https://regexr.com/3qmus