Javascript中的字符串修剪

时间:2015-04-01 01:36:06

标签: javascript angularjs string

我有一个返回JSON字符串的API。我只想要它返回的部分字符串。

它返回汽车风格

"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:我正在使用angularJS

4 个答案:

答案 0 :(得分:5)

你应该检查正则表达式,你可以选择你想要的字符串位,然后删除其余部分,我不确定你是否想要括号中的文本或者你想要的一切,但是,我的样本使用之前的东西括号。你可以在这里玩正则表达式,我把你的样本放在那里:

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

如果要使用括号内的内容,只需将替换字符串中的\ 1替换为\ 2

在java中,这可能是这样的:

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

答案 1 :(得分: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( /\([^)]*\)/ , "");

答案 2 :(得分:1)

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

示例:

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

答案 3 :(得分: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>
&#13;
&#13;
&#13;