2015-04-01 89 views
-2

我有一個返回JSON字符串的API。我只想要它返回的字符串的一部分。使用Javascript修剪字符串

它返回一個汽車風格

"S 4dr Sedan (1.8L 4cyl 4A)" 
"CE 4dr Sedan (1.8L 4cyl 4A)" 
"LE 4dr Sedan (1.8L 4cyl 5M)" 
"LE 4dr Sedan (1.8L 4cyl 4A)" 

我想在括號「串出」一切。我沒有真正與JavaScript字符串編輯工作,所以我真的不知道如何做到這一點。請幫忙。

(任何提示是太酷)

PS:IM與angularJS

回答

5

你應該檢查出的正則表達式,你可以選擇你想要的字符串的位並刪除其餘的工作,我不知道如果你想要括號內的文字,或者你想要一切,但是我的示例使用括號前的內容。你可以在這裏玩的正則表達式,我把你的樣品中有:

https://regex101.com/r/lT8fB3/1

如果你想用的是括號內只是替換\ 1替換字符串

\ 2

在Java中,這可能看起來是這樣,那麼:

String updated = your_json_string.replaceAll("\"\s?(.*)\s\((.*)\)\"", "$1"); 
+0

謝謝。工作! – 2015-04-01 04:33:39

1

如果你正在嘗試做的是從字符串中刪除括號任何東西,你可以使用字符串對象的replace的方法用合適regular expression

var carStyle = "S 4dr Sedan (1.8L 4cyl 4A)"; 
var s = carStyle.replace(/\(.*\)/ , ""); 
console.log(s); // "S 4dr Sedan " 

的相當繁瑣/\(.*\)/是一個正則表達式將匹配括號及其內容。

注:作爲hexeri-software指出在評論中,使用.*匹配括號is generally a bad idea之間有什麼,所以一個更好的正則表達式可能是:

var s = carStyle.replace(/\([^)]*\)/ , ""); 
+0

在使用'。*'之前,你應該經常測試,因爲它非常貪婪 - 它是正確的語法,但是很危險。我發現使用'^'組更安全,所以在這種情況下搜索直到我們遇到括號內的''')''' - 所以'/ \([^)] * \)/'將是_safer_變體 – 2015-10-09 21:19:08

+0

@ hexerei-軟件的好處,添加備註與替代正則表達式。 – 2015-10-10 00:03:59

0

使用正則表達式可以解決你的問題。這是一個僅隔離兩個括號之間的文本的例子。 這裏是一個link瞭解更多關於JavaScript的正則表達式:

var first = "S 4dr Sedan (1.8L 4cyl 4A)"; 
 

 

 
var patt = /\(([^)]*)\)/gi 
 
var res = patt.exec(first); 
 
document.getElementById('first').value = res[1];
<label>first 
 
    <input id="first" /> 
 
</label>

1

您可以使用正則表達式:/(?=\().*/g

例子:

s = "S 4dr Sedan (1.8L 4cyl 4A)" 
x = s.match(/(?=\().*/g)[0] 
// will give you an array "(1.8L 4cyl 4A)"