2

如何在使用正则表达式的情况下删除字符串中尖括号内的任何内容?

例如,我有以下输入:

var str = "This <is> some <random> text";  

并希望获得以下输出:
This some text

4

3 回答 3

7

假设括号将按照您的示例排列,您可以执行以下操作:

str = str.split('(')
   .map(function(s) { return s.substring(s.indexOf(')')+1); })
   .join('');

请注意,删除括号内的文本时,会留下双空格。这似乎符合您的要求,因为这两个空格实际上都在您的括号之外。它们可以用 删除.replace(/\s+/g, ' '),但那当然是使用正则表达式。如果您想假设括号内的单词后面总是跟着一个也将被删除的空格,您可以执行以下操作:

str = str.split('(')
   .map(function(s) { 
      return s.indexOf(') ') == -1 
         ? s
         : s.substring(s.indexOf(') ') + 2);
    })
   .join('');

"This "在此示例中,您需要检查字符串 ( )中没有括号的情况。我们以前不需要它,因为我们总是只做 +1,如果indexOf产生 -1,那只是意味着取整个字符串。

于 2013-03-19T08:15:43.953 回答
2

多么奇怪的要求!这不会使用正则表达式:

"This (is) some (random) text".split('(').map(function(el) {
    var i = el.indexOf(')');
    return el = ~i ? el.substr(i) : el;
}).join('('); // This () some () text
于 2013-03-19T08:16:09.457 回答
1
var str = "This (is) some (random) text";

while (str.indexOf('(') != -1) {
    str = str.substring(0, str.indexOf('(') - 1) + str.substring(str.indexOf(')') + 1);
}
// Output: This some text
于 2013-03-19T08:20:35.690 回答