"abs:%s" 正则表达式是什么意思?
What does "abs:%s" regex means?
我在我的项目中使用 Jsoup,我试图了解我 HTMLparser.java 中的这些代码行是如何一步步完成的:
static List<LinkNode> toLinkNodeObject(LinkNode parentLink, Elements tagElements, String tag) {
List<LinkNode> links = new LinkedList<>();
for (Element element : tagElements) {
if(isFragmentRef(element)){
continue;
}
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");
String url = element.attr(absoluteRef);
if(url!=null && url.trim().length()>0) {
LinkNode link = new LinkNode(url);
link.setTag(element.tagName());
link.setParentLink(parentLink);
links.add(link);
}
}
return links;
}
你能告诉我这行中的 "abs:%s" 正则表达式在做什么吗?
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");
假设标签具有以下值:
tag = "blah, blah, [medo0070";
然后是有问题的行
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href")
将分配
abs:medo0070
到 absoluteRef 因为标记变量包含“[”字符。如果标签具有值
tag = "blah, blah, medo0070";
那么 absoluteRef 将被赋予值
abs:href
因为标签变量不包含'['字符。
三元运算符(参见此处:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html)的工作方式如下:
a ? b : c;
等同于
if (a) {
b;
}
else {
c;
}
在您的示例中,a 是 tag.contains("["),b 是 tag.substring(tag.indexOf ("") + 1, tag.length()) 并且 c 是 "href".
我在我的项目中使用 Jsoup,我试图了解我 HTMLparser.java 中的这些代码行是如何一步步完成的:
static List<LinkNode> toLinkNodeObject(LinkNode parentLink, Elements tagElements, String tag) {
List<LinkNode> links = new LinkedList<>();
for (Element element : tagElements) {
if(isFragmentRef(element)){
continue;
}
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");
String url = element.attr(absoluteRef);
if(url!=null && url.trim().length()>0) {
LinkNode link = new LinkNode(url);
link.setTag(element.tagName());
link.setParentLink(parentLink);
links.add(link);
}
}
return links;
}
你能告诉我这行中的 "abs:%s" 正则表达式在做什么吗?
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href");
假设标签具有以下值:
tag = "blah, blah, [medo0070";
然后是有问题的行
String absoluteRef = String.format("abs:%s", tag.contains("[") ? tag.substring(tag.indexOf("[") + 1, tag.length()) : "href")
将分配
abs:medo0070
到 absoluteRef 因为标记变量包含“[”字符。如果标签具有值
tag = "blah, blah, medo0070";
那么 absoluteRef 将被赋予值
abs:href
因为标签变量不包含'['字符。
三元运算符(参见此处:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html)的工作方式如下:
a ? b : c;
等同于
if (a) {
b;
}
else {
c;
}
在您的示例中,a 是 tag.contains("["),b 是 tag.substring(tag.indexOf ("") + 1, tag.length()) 并且 c 是 "href".