我有一个角度服务,它返回一个内部有许多对象的数组。
$ scope.data:
[
{
date: "03/12/2014",
name: "mr blue",
title: "math teacher (Germany)"
},
{
date: "04/02/2015",
name: "mrs yellow",
title: "chemistry teacher (Spain)"
},
]
您可以在标题字段中看到它包含标题和位置。我如何分隔标题和位置?同时删除括号?
服务
$scope.loadFeed=function(e){
myService.parseFeed(url).then(function(res) {
$scope.data = res.data.responseData.feed.entries;
});
}
我所尝试的是:
$scope.loadFeed=function(e){
myService.parseFeed(url).then(function(res) {
$scope.data = res.data.responseData.feed.entries;
var strWithoutBracket = $scope.data[0].title.replace(/\(.*?\)/g,'');
console.log(strWithoutBracket);
$scope.location = strWithoutBracket;
});
}
但是console.log(strWithoutBracket);
显示为:
chemistry teacher
基本上我所追求的是没有位置的$scope.title
。 $scope.location
没有标题。
答案 0 :(得分:4)
尝试:
$scope.data = [
{
date: "03/12/2014",
name: "mr blue",
title: "math teacher (Germany)"
},
{
date: "04/02/2015",
name: "mrs yellow",
title: "chemistry teacher (Spain)"
},
];
angular.forEach($scope.data, function(item){
var values = /(.*)\s+\((.+)\)\s*$/.exec(item.title||"") || [];
item.title = values[1];
item.location = values[2];
});
console.log($scope.data);
<强> Demo 强>
答案 1 :(得分:2)
以下是标题和位置的完整解决方案:
var str = "chemistry teacher (Spain)";
var regExp = /\(([^)]+)\)/;
var matches = regExp.exec(str);
var title = str.substring(0, str.indexOf('('));
var location = matches[1];
console.log('title : ' + title);
console.log('location : ' + location);
答案 2 :(得分:2)
您已经获得了化学老师,您应该将其设置为标题而不是位置。
您可以这样做:
var regExp = /\(([^)]+)\)/;
$scope.location = regExp.exec($scope.data[0].title);
$scope.data[0].title = $scope.data[0].title.replace(/\(.*?\)/g,'');
应根据需要更新您的标题和位置。
答案 3 :(得分:1)
这是你可以尝试的。在下面的正则表达式中,我假设标题和位置之间至少有一个空格字符。
var locationRegex = /\s+\(([a-zA-Z]*)\)*/;
var strWithoutBracket = $scope.data[0].title.replace(locationRegex,'');
var location = $scope.data[0].title.match(locationRegex)[1];
答案 4 :(得分:1)
您可以使用以下代码:
var str = "math teacher (Germany)";
var m = str.match(/(.*) *\((.*)\)/);
var obj = {
title: m[1],
location: m[2]
};
document.getElementById('output').innerHTML = JSON.stringify(obj);
&#13;
<div id="output"></div>
&#13;
答案 5 :(得分:1)
试试这个
var strWithoutBracket = $scope.data[0].title.replace(/([()])+/g,'');
答案 6 :(得分:1)
尝试这个
var strWithoutBracket = $scope.data[0].title.split((/\(([^}]+)\)/)[1]));
console.log(strWithoutBracket);