【问题标题】:Find string in array between other strings with javascript [duplicate]使用javascript在其他字符串之间的数组中查找字符串[重复]
【发布时间】:2021-03-23 17:24:44
【问题描述】:

我有一个例如这样的文本:

“订单号 123888 项目 10 SCD”

这个我加载到一个数组中。

从这个数组中取出“Ordernumber”和“Item”之间的字符串最快的方法是什么?在这种情况下,数字“123888”

我刚开始接触js。

在我的实际项目中,文本有多行。 并且从中我还必须获取其他一些信息(有时是最后一个强项,主要是在其他始终相同的字符串之间......)

在 VBA 中,我能够将所有文本加载到数组中,并使用查找/搜索等功能编写 VBA。

现在我想将我的工具转移到 Google 表格,所以我刚刚开始学习/使用 Javascript。

提前感谢您的支持和反馈,这是我在这个社区的第一个问题????

【问题讨论】:

    标签: javascript arrays regex string find


    【解决方案1】:

    我不认为这是实现自动化的好方法。在字符串中搜索很容易出错,并且很难确保您提取的是您真正要搜索的内容。这是由于单词重复等。 但是,上述示例的一种可能解决方案是使用正则表达式。对于您的示例,您可以使用它(如您所说,我故意将您的字符串放入数组中):

    var c = [”Ordernumber 123888 Item 10 SCD”]
    yourNumberThatYouWant = c[0].match(/Ordernumber (.*) Item/)[1]
    

    这适用于只有一次这些单词的短字符串。例如,如果您将在其他地方重复单词“Item”,则解决方案将在“Ordernumber”的第一个实例和“Item”的最后一个实例之间带来所有内容。

    【讨论】:

      【解决方案2】:

      您可以使用.split () 来获取一个或另一个单词之间的字符串,这样,您还可以根据需要访问通知数量的属性。 但是意识到它是一个销售数组,我建议您对对象进行解封装,以便能够更好地操作数据并避免将它们全部放在一个字符串中而丢失。

       let string = 'Ordernumber 123888 Item 10 SCD';    
       let result = string.split('Ordernumber').pop().split('Item')[0];
       console.log(result);
      

      【讨论】:

        【解决方案3】:

        我认为@Tim Biegeleisen 使用正则表达式更好, 但实现此目的的另一种方法是从字符串中获取“ordernumber”的起始索引,然后为“Item”获取相同的索引。

        通过使用String.prototype.substring(),并提供这些索引,您可以获得这些单词之间的文本,如下所示:

        const str = "Ordernumber 123888 Item 10 SCD"
        
        const res = str.substring(str.indexOf('Ordernumber') + 'Ordernumber'.length, str.indexOf('Item'));
        
        console.log(res);

        String.prototype.indexOf()
        String.prototype.substring()

        【讨论】:

        • 我也试过这个,但我总是得到错误 str.substring is not a function。这适用于数组吗?
        • 你从数组中获取字符串,例如arr[0].substring()
        【解决方案4】:

        假设使用空格分割单词,则可以将字符串分割并存储到数组中。

        const str = ”Ordernumber 123888 Item 10 SCD”; const data = str.split(' '); console.log(data[1]);

        现在可以通过索引获取数据了。

        【讨论】:

        • 文本有多个空格。它是从 SAP 事务窗口导入的剪贴板。
        【解决方案5】:

        您可以使用正则表达式替换:

        var input = "Ordernumber 123888 Item 10 SCD";
        var number = input.replace(/\bOrdernumber (\d+) Item\b.*/, "$1");
        console.log(number);

        【讨论】:

        • 非常感谢您的快速反馈。
        • 正则表达式总是最快的方式吗?在 VBA 中,我使用 MID、FIND、LEFT 等。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 2017-07-07
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多