Javascript - 根据一个字符拆分字符串,但在结果数组中保留该字符

3

输入

((Sass and Javascript) or (Python and Scala))

分隔符 -"(" 和 ")"

输出 是一个包含分隔符元素的数组

["(","(","Sass and Javascript",")","or","(","Python and Scala",")",")"]

我面临的问题是这样的。

var arr = "((Sass and Javascript) or (Python and Scala))".split(/[(|)]/);
console.log(arr);
document.getElementById("output").innerHTML = arr;
<div id="output"></div>

当我在字符串上使用split时,我会失去"("和")"字符,而且由于它们可能出现在字符串的任何位置,我需要手动将它们插入数组中。在JS中有更好的方法吗?

1
你尝试过使用正则表达式吗? - Sandeep Nayak
"((Sass and Javascript) or (Python and Scala))".match(/[()]|[^()]+/g) - Touffy
5个回答

7

您可以使用正则表达式

/[()]|[^()]*/g

正则表达式演示及解释

  1. [()]: 匹配 (),仅匹配一次
  2. |: 或
  3. [^()]: 反向类,不包括 ()
  4. *: 匹配前面的类零次或多次
  5. g: 全局匹配

演示

var str = '((Sass and Javascript) or (Python and Scala))';
var matches = str.match(/[()]|[^()]*/g) || [];
matches.pop(); // Remove the last empty match from array

console.log(matches);
document.write('<pre>' + JSON.stringify(matches, 0, 2) + '</pre>');


谢谢Tushar。这是一个不错的方法。 - Bhargav Ponnapalli
@bhargavponnapalli 欢迎 :) 很高兴能帮到你 - Tushar

1

只是简单的

var string = '((Sass and Javascript) or (Python and Scala))';
var result = str.match(/[()]|[^()]*/g);

console.log(result)

0

var log = function(val){
  console.log(val);
  document.write('<pre>' + JSON.stringify(val , null , ' ') + '</pre>');
  }

var firstStr = '((Sass and Javascript) or (Python and Scala))';
var secondStr = '{>Sass and Javascript< or [Python and Scala]}';


var firstArr = firstStr.match(/[^A-Za-z ]|[A-Za-z ]+/g);
var secondArr = secondStr.match(/[^A-Za-z ]|[A-Za-z ]+/g);

     log(firstArr);
     log(secondArr);
<div id ='el'></div>


0
var string = "abcdeabcde";
string = string.replace(/(/gi, ",(,");
string= string.replace(/)/gi, ",),");
var newstring = string.split(",");
return newstring;

0

您可以在分割操作中使用捕获括号来简化代码。请注意,这种方法似乎并不被所有浏览器支持。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

当您在分割正则表达式中使用捕获括号时,被捕获的分隔符将与“分割”内容一起返回到列表中。

"((Sass and Javascript) or (Python and Scala))".split(/\s*([()])\s*/)

输出

["", "(", "", "(", "Sass and Javascript", ")", "or", "(", "Python and Scala", ")", "", ")", ""]

你可能需要在处理后排除长度为零的元素。


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