使用javascript在数组中的其他字符串之间查找字符串

使用javascript在数组中的其他字符串之间查找字符串,javascript,arrays,regex,string,find,Javascript,Arrays,Regex,String,Find,我有这样一个文本示例: “订单号123888第10项SCD” 我将其加载到一个数组中 从这个数组中获取“Ordernumber”和“Item”之间的字符串的最快方法是什么?在本例中,编号为“123888” 我刚从js开始 在我的实际项目中,文本有多行。 从中,我还必须得到一些其他信息(有时是最后一个强字符串,主要是在始终相同的其他字符串之间…) 在VBA中,我能够将所有文本加载到一个数组中,并使用find/search等编写VBA 现在我想将我的工具转移到Google Sheets,所以我才开始

我有这样一个文本示例:

“订单号123888第10项SCD”

我将其加载到一个数组中

从这个数组中获取“Ordernumber”和“Item”之间的字符串的最快方法是什么?在本例中,编号为“123888”

我刚从js开始

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

在VBA中,我能够将所有文本加载到一个数组中,并使用find/search等编写VBA

现在我想将我的工具转移到Google Sheets,所以我才开始学习/使用Javascript


提前感谢您的支持和反馈,请回答我在社区中的第一个问题您可以使用正则表达式替换:

var input=“订单号123888第10项SCD”;
变量编号=输入。替换(/\bOrdernumber(\d+)项\b.*/,“$1”);

控制台日志(编号)假设使用空格拆分单词,则可以拆分字符串并将其存储到数组中

const str=“订单号123888第10项SCD”;常量数据=str.split(“”);console.log(数据[1])


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

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

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

const str=“订单号123888第10项SCD”
const res=str.substring(str.indexOf('Ordernumber')+'Ordernumber'.length,str.indexOf('Item'));
控制台日志(res)
您可以使用
.split()
来获取一个单词或另一个单词之间的字符串,这样,您也可以访问通知数量的属性(如果需要)。 但是,意识到它是一个销售阵列,我建议您对对象进行去封装,以便能够更好地操作数据,并避免在单个字符串中丢失数据

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

我不相信这是一个自动化的好方法。在字符串中搜索容易出错,并且很难确保您提取的是真正要搜索的内容。这是由于单词重复等原因造成的。 然而,对于上面的示例,一个可能的解决方案是使用正则表达式。对于您的示例,您可以使用以下内容(如您所说,我特意将字符串放入数组中):


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

非常感谢您的快速反馈。regex是否始终是最快的方法?在VBA中,我使用MID、FIND、LEFT等。我也尝试过这样做,但我总是得到错误str。substring不是一个函数。这是否适用于数组?您可以从数组访问字符串,例如
arr[0]。substring()
文本有多个空格。它是从SAP事务窗口的剪贴板导入。
var c = [”Ordernumber 123888 Item 10 SCD”]
yourNumberThatYouWant = c[0].match(/Ordernumber (.*) Item/)[1]