gpt4 book ai didi

javascript - JavaScript 中的正则表达式 : table of positions instead of table of occurrences

转载 作者:行者123 更新时间:2023-12-02 18:18:56 25 4
gpt4 key购买 nike

正则表达式是最强大的。然而,它们返回的结果有时是无用的:

例如:

我想使用分号管理 CSV 字符串。我定义一个字符串,例如:

var data = "John;Paul;Pete;Stuart;George";

如果我使用指令:

var tab = data.match(/;/g)

之后,“tab”包含一个由 4 个“;”组成的数组:

tab[0]=";", tab[1]=";", tab[2]=";", tab[3]=";"

这个数组在当前情况下没有用,因为我什至在使用正则表达式之前就知道它。

事实上,我想做的是两件事:

  • 第一:抑制第四个元素(不是“Stuart”为“Stuart”,而是“Stuart”为第四个元素)
  • 第二步:将第三个元素替换为“Ringo”,以便返回(到您曾经所属的位置!)以下结果:

    data == "约翰;保罗;林戈;乔治";

在这种情况下,我非常希望获得一个给出分号位置的数组:

tab[0]=4, tab[1]=9, tab[2]=14 tab[3]=21

而不是无用的(在本例中)

tab[0]=";", tab[1]=";", tab[2]=";", tab[3]=";"

所以,这是我的问题:有没有办法使用正则表达式获取这个数字数组?

最佳答案

要获得tab[0]=4、tab[1]=9、tab[2]=14 tab[3]=21,您可以这样做

var tab = [];
var startPos = 0;
var data = "John;Paul;Pete;Stuart;George";

while (true) {

var currentIndex = data.indexOf(";", startPos);

if (currentIndex == -1) {
break;
}

tab.push(currentIndex);
startPos = currentIndex;

}

但是如果想要的结果是“John;Paul;Ringo;George”,你可以这样做

var tab = data.split(';'); // Split the string into an array of strings

tab.splice(3, 1); // Suppress the 4th element
tab[2] = "Ringo"; // Replace the 3rd element by "Ringo"

var str = tab.join(';'); // Join the elements of the array into a string

对于您的情况,第二种方法可能更好。

关于javascript - JavaScript 中的正则表达式 : table of positions instead of table of occurrences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com