我找不到答案。希望有人能够提供帮助。
我需要能够搜索“12”之类的数字,并且只能在逗号分隔的字符串上获得1,如:
var str = "1, 13, 112, 12, 1212, 555"
基本上,如果我有产品代码,并且我找到了12,我想返回一个单一的“自行车”,因为单“12”。但我得到的数字是112,1212等等。
任何想法我可以使用哪种功能或方法?
答案 0 :(得分:1)
您可以拆分字符串然后Array.includes
以检查数组中是否存在该值。
function check(str, val){
return str.split(", ").includes(val+"");
}
var str = "1, 13, 112, 12, 1212, 555"
console.log(check(str, 12));
console.log(check(str, 121));
console.log(check(str, 1212));
答案 1 :(得分:0)
另一个可能的答案:
var twelve = /(^| )12(,|$)/;
var s = "1, 13, 112, 12, 1212, 555";
console.log(twelve.test(s)); // true
根据您的评论,让我帮您理解第一行。
/(^| )12(,|$)/
是正则表达式。正则表达式是定义搜索模式的字符序列。这是嵌入在JavaScript中的功能之一,但它并不固有地与JavaScript相关联。换句话说,您不应该在JavaScript范围内学习正则表达式,但JavaScript仍然是在正则表达式上进行实验的好方法。话虽如此,/(^| )12(,|$)/
意味着什么?
两个/
是分隔符,表示表达式的边界。 /
之间的区别在于表达式本身(^| )12(,|$)
,它描述了我们正在寻找的模式。我们可以将此表达式中涉及的各种字符分为两类:
1
,2
,,
和
),(
,)
,|
,^
和$
)。常规字符是没有特殊含义的字符。例如:
/cat/.test("cat") // true
/cat/.test("concat") // true
元字符是具有特殊含义的字符:
^
表示“文字的开头”,$
表示“文字结尾”,()
表示子表达式,|
表示逻辑OR。示例1,空文本:
/^$/.test("") // true
/^$/.test("azerty") // false
示例2,完全匹配:
/^zert$/.test("zert") // true
/^zert$/.test("azerty") // false
示例3,备选方案:
/(az|qw)erty/.test("azerty") // true
/(az|qw)erty/.test("qwerty") // true
要结束,让我们回到/(^| )12(,|$)/
:
(^| ) start of the text or " "
12 then "12"
(,|$) then "," or end of the text
因此,我们的模式与12
,* 12
,12,*
或* 12,*
等字符串匹配,其中*
表示“零个或多个字符”。
最后一句话,在JavaScript中,您可以使用new
关键字声明正则表达式:
var twelve = new RegExp("(^| )12(,|$)");
当您需要动态更改表达式的某些部分时,这非常有用:
function newNumberPattern (n) {
return new RegExp("(^| )" + n + "(,|$)");
}
var eleven = newNumberPattern(11);
var twelve = newNumberPattern(12);
就是这样,我希望这很有启发性: - )
答案 2 :(得分:0)
我认为Google工作表不支持.includes()。但这似乎有效:
/**
@customfunction
*/
function AK_CHECK(input){
var split_cell = input.split(",").indexOf("12");
if (split_cell > -1){
return "Bicycle"
} else {
return "NO"}
}