如何在不使用正则表达式的情况下删除字符串中尖括号内的任何内容?
例如,我有以下输入:
var str = "This <is> some <random> text";
并希望获得以下输出:
This some text
如何在不使用正则表达式的情况下删除字符串中尖括号内的任何内容?
例如,我有以下输入:
var str = "This <is> some <random> text";
并希望获得以下输出:
This some text
假设括号将按照您的示例排列,您可以执行以下操作:
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,那只是意味着取整个字符串。
多么奇怪的要求!这不会使用正则表达式:
"This (is) some (random) text".split('(').map(function(el) {
var i = el.indexOf(')');
return el = ~i ? el.substr(i) : el;
}).join('('); // This () some () text
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