我正在尝试查找图片的源名称noPic
是否为大写或小写。
var noPic = largeSrc.indexOf("nopic");
我应该写:
var noPic = largeSrc.toLowerCase().indexOf("nopic");
但是这个解决方案不起作用......
答案 0 :(得分:23)
您可以将正则表达式与不区分大小写的修饰符一起使用 - 诚然不一定与indexOf一样快。
var noPic = largeSrc.search(/nopic/i);
答案 1 :(得分:17)
不,没有不区分大小写的方法来调用该函数。也许你的第二个例子不起作用的原因是因为你错过了对text()
函数的调用。
试试这个:
var search = "nopic";
var noPic = largeSrc.text().toLowerCase().indexOf(search.toLowerCase());
答案 2 :(得分:3)
尝试:
var lowerCaseLargeSrc = largeSrc.toLowerCase();
var noPic = lowerCaseLargeSrc.indexOf("nopic");
答案 3 :(得分:2)
请注意,如果搜索字符串来自用户输入,则需要转义特殊的正则表达式字符,这最终会降低regexp方法的速度,使得toLowerCase()方法在这种情况下最快。
这就是它的样子:
var search = getUserInput();
/* this slows it down */
var regex = RegExp(search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "i");
var noPic = testString.search(regex);
请参阅更新的jsperf:http://jsperf.com/regex-vs-tolowercase-then-regex/4
答案 4 :(得分:1)
只有largeSrc已经是字符串时,您的代码才有效。你可能会得到一个输入,而不是html元素。因此,使用jQuery将任何潜在的输入元素解析为其中的文本。例如:
while (scan.hasNext()) {
if (scan.hasNextDouble()) {
double value = scan.nextDouble();
out.println(value);
} else {
scan.next();
}
}