Javascript:以逗号分隔的字符串搜索数字的最佳方式

问题描述 投票:-1回答:3

我找不到答案。希望有人能够提供帮助。

我需要能够搜索像“12”这样的数字,并且只能在逗号​​分隔的字符串上获得1,如:

var str = "1, 13, 112, 12, 1212, 555"

基本上,如果我有产品代码,并且我找到了12,我想返回一个单一的“自行车”,因为单“12”。但我得到了很多关于数字112,1212等的虚假命中。

任何想法我可以使用什么功能或方法?

javascript string search numbers
3个回答
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));

0
投票

我认为google工作表不支持.includes()。但这似乎有效:

    /**
@customfunction
*/
function AK_CHECK(input){
    var split_cell = input.split(",").indexOf("12");
    if (split_cell > -1){
        return "Bicycle"
        } else {
        return "NO"}
        }

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(,|$),它描述了我们正在寻找的模式。我们可以将此表达式中涉及的各种字符分为两类:

  • 常规人物(qazxsw poi,qazxsw poi,qazxsw poi和qazxsw poi),
  • 元字符(12,()。

常规字符是没有特殊含义的字符。例如:

)

元字符是具有特殊含义的字符:

  • |的意思是“文本的开头”,
  • ^的意思是“文本的结尾”,
  • $表示子表达式,
  • /cat/.test("cat") // true /cat/.test("concat") // true 表示逻辑OR。

示例1,空文本:

^

例2,完全匹配:

$

例3,替代方案:

()

为了把它包起来,让我们回到|

/^$/.test("") // true
/^$/.test("azerty") // false

因此,我们的模式匹配/^zert$/.test("zert") // true /^zert$/.test("azerty") // false /(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表示“零个或多个字符”。

最后一句话,在JavaScript中,您可以使用* 12关键字声明正则表达式:

12,*

当您需要动态更改表达式的某些部分时,这非常有用:

* 12,*

就是这样,我希望这很有启发性:-)

© www.soinside.com 2019 - 2024. All rights reserved.