我今天遇到了一些困惑,if(x>=0)
总是返回"string".indexOf('');
,但我希望0
(对于-1
);相反,false
始终返回"string".lastIndexOf('');
6
更容易理解,因为字符串长度为6个字母(lastIndexOf
,零索引返回"string".length
),但我看不到ECMAscript规范中的任何位置(5.1或6.0)描述为什么 5
将被视为单词/字符边界
究竟是什么发生在这里?
答案 0 :(得分:6)
规范说:
返回不小于 start 的最小整数 k k + searchLen 不大于 len ,并且对所有人而言 非负整数 j 小于 searchLen , S 的位置 k + j 与 j 位置的字符相同 of searchStr ;但是如果没有这样的整数 k ,那么返回 值-1。
因为vacuous truth而在第0位满足了这个条件:因为你正在搜索空字符串,所以你能想到的任何一个语句都适用于每个字符,因为它没有字符。
更正式地说,对于任何声明//tr[./td[.='Steve']][./td[.='Smith']]/td[.='Edit']
,如果package com.mkyong;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class cool {
public static void main(String[] args) {
Document doc;
try {
// need http protocol
doc = Jsoup.connect("http://google.com").get();
// get page title
String title = doc.title();
System.out.println("title : " + title);
// get all links
Elements links = doc.select("a[href]");
for (Element link : links) {
// get the value from href attribute
System.out.println("\nlink : " + link.attr("href"));
System.out.println("text : " + link.text());
}
} catch (IOException e) {
e.printStackTrace();
}
} }
,P
保留S = ∅
。