2013-03-19 24 views
2

如何使用正則表達式除去字符串而不使用的尖括號內的任何內容?如何刪除字符串括號中的文本而不使用JavaScript中的正則表達式?

例如是我有以下輸入:

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

,並想獲得以下輸出:
這一些文字

+0

什麼'無功海峽= 「這(是))一些(隨機)文本」;'?編輯:或var var =「這是(是)一些(隨機)文本」;''爲此? – Jeff 2013-03-19 08:13:47

+0

爲什麼你不想使用正則表達式? – epoch 2013-03-19 08:14:02

+0

我想補充一點,你想要實現是正則表達式存在的主要原因之一 – zero 2013-03-19 08:27:11

回答

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,那就意味着取整個字符串。

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 
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 
相關問題