2015-04-01 46 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)"