JavaScript分割函数

7
我可以使用JavaScript的split方法将逗号分隔的项目列表放入数组中:
var mystring = "a,b,c,d,e";
var myarray = mystring.split(",");

我心里想的有点复杂。我有一个逗号分隔的字符串:
"mystring_109_all,mystring_110_mine,mystring_125_all"

如何将这个字符串分割成数组?

6
请说明数组应该长什么样子。 - Raoul Duke
1
在你第一个示例中已经写了相同的代码。结果应该是什么? - Felix Kling
1
除非我错了,否则没有什么更复杂的了。它仍然是在逗号上进行简单的拆分。 - Justin Niessner
7个回答

11

您可以为split()提供一个正则表达式,因此要在逗号或下划线上拆分,请使用以下内容:

var mystring = "mystring_109_all,mystring_110_mine,mystring_125_all";
var myarray  = mystring.split(/[,_]/);

如果你想要更具动态性的内容,可以尝试类似于"搜索而不替换"这样的方法,使用replace()函数来解析复杂字符串。例如:
mystring.replace(/(?:^|,)([^_]+)_([^_]+)_([^_]+)(?:,|$)/g,
  function ($0, first, second, third) {
    // In this closure, `first` would be "mystring",
    // `second` would be the following number,
    // `third` would be "all" or "mine"
});

1
不该是mystring.split(/,|_/)吗? - Ken
1
感谢您提供这篇文章的链接 - 我以前没有看过。 很好知道。 - Jamie Wong
1
或者是 mystring.split(/[,_]/); - Ken
@Ken:是的,我本来想写 [,_] 的 - 感谢你指出来,今天我状态有点不太好 ;) - Andy E
1
@Andy - 必须冷静下来,伙计。 - Matt Ball

2

相同,但循环

var myCommaStrings = myString.split(','); 
var myUnderscoreStrings = []; 
for (var i=0;i<myCommaStrings.length;i++) 
  myUnderscoreStrings[myUnderscoreStrings.length] = myCommaStrings[i].split('_');

1

根据你的规格不完整,我猜测一下:

var mystring = "mystring_109_all,mystring_110_mine,mystring_125_all";
var myarray = mystring.split(",");
for (var i = 0; i < myarray.length; i++) {
  myarray[i] = myarray[i].split("_");
}

1
如果您想要先按逗号分割,然后再按下划线分割,那么您需要遍历该列表:
var split1 = theString.split(',');
var split2 = [];
for (var i = 0; i < split1.length; ++i)
  split2.push(split1[i].split('_'));

如果你想按逗号或者下划线进行分割,你可以使用正则表达式进行分割,但这有时会出现错误。这里有一个页面可以了解相关问题:http://blog.stevenlevithan.com/archives/cross-browser-split


0
<!DOCTYPE html>
<html>
<body>

<p>Question is var str = "a,b,c,d,e,f,g"; </p>

<button onclick="myFunction()">Split Button</button>

<p id="demo"></p>
<p id="demo1"></p>

<script>
var text = "";
function myFunction() {
    var str = "a,b,c,d,e,f";
    var arr = str.split(",");

    for(var i = 0; i<arr.length; ++i){ 
        text += arr[i] +" ";
        document.getElementById("demo").innerHTML = text;
    }
    document.getElementById("demo1").innerHTML = arr[0];
}


</script>

</body>
</html>


**Answer**
a b c d e f g

Arr[0]=a

答案:a b c d e f g - Keshav Gera
答案 Arr[0]=a - Keshav Gera

0

嗯,和你原来的例子一样:

var mystring = "mystring_109_all,mystring_110_mine,mystring_125_all";
var myarray = mystring.split(",");

0
我创建了一个仅包含JavaScript函数的库,名为FuncJS,其中有一个名为split()的函数,它可以(希望如此)完成任务。
阅读文档并下载FuncJS,这是一个非常轻量级的文件。

1
能否请您给出一个代码示例,展示一下您的库如何确切地简化任务。仅仅说它在文档中某个地方并不是很有帮助,特别是考虑到除了作者之外,可能还有更多人会看到您的回答。那么每个人都需要额外的步骤来了解为什么您的解决方案可能更优秀。 - LeoR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接