Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中拆分字符串的帮助_Javascript_Regex - Fatal编程技术网

JavaScript中拆分字符串的帮助

JavaScript中拆分字符串的帮助,javascript,regex,Javascript,Regex,输入字符串:a=>aa | b=>b | b | c=>cc 以及输出: a=>aa b=>b||b c=>cc 他的答案有效,但我需要使用.split()方法并将输出存储在数组中 所以我不能使用.match()方法 我该怎么做呢?.match返回数组,所以使用.match没有问题 arr = "a=>aa|b=>b||b|c=>cc".match(/(?:[^|]|\|\|)+/g) // a=>aa,b=>b||b,c=>cc arr.length //

输入字符串:
a=>aa | b=>b | b | c=>cc

以及输出:

a=>aa b=>b||b c=>cc 他的答案有效,但我需要使用
.split()
方法并将输出存储在数组中

所以我不能使用
.match()
方法


我该怎么做呢?

.match返回数组,所以使用.match没有问题

arr = "a=>aa|b=>b||b|c=>cc".match(/(?:[^|]|\|\|)+/g)
// a=>aa,b=>b||b,c=>cc
arr.length
// 3
arr[0]
// a=>aa
这是我的建议:

var str = 'a=>aa| b=>b||b | c=>cc';
var arr = str.split(/\s*\|\s+/);
console.log(arr)
// ["a=>aa", "b=>b||b", "c=>cc"]

var obj = {}; // if we want the "object format"
for (var i=0; i<arr.length; i++) {
  str=arr[i];
  var match = str.match(/^(\w+)=>(.*)$/);

  if (match) { obj[match[1]] = match[2]; }
}
console.log(obj);

// Object { a:"aa", b:"b||b", c: "cc" }

虽然我讨厌和自己争论,但另一个可能的解决办法是:

var matches = 'a=>aa|b=>b||b|c=>cc'.split(/\b\s*\|\s*\b/g);
含义:当您看到被空格包围的
|
以及字母数字字符之间时,将拆分。
此版本还将保持
d|=d
不变。

\b
可能会引入错误,但如果管道不在字母数字字符之间,它可能不会拆分,例如
a=>(a+a)| b=>b
不会拆分。

我在这个问题的另一个副本中发布了这个问题(请不要多次提问!)

这应该做到:

"a=>aa|b=>b||b|c=>cc".split(/\|(?=\w=>)/);
这将产生:

["a=>aa", "b=>b||b", "c=>cc"]

关于“输出”的一个问题-你想要
['a=>aa','b=>b | | | b','c=>cc']
,还是你来自PHP背景,正在考虑一个“哈希表”(JS中的一个对象)
{“a”:“aa”,“b”:“b | | b”,“c”:“cc”
?实际上,我需要这个问题来完成我的编者课程。我向我的教授解释了匹配函数,他说你必须用split回答这个问题。。。还有一件事:输入是:a=>aa | b=>b | b | c=>cc(每个字符之间没有空格)
"a=>aa|b=>b||b|c=>cc".split(/\|(?=\w=>)/);
["a=>aa", "b=>b||b", "c=>cc"]