如果这些可能的字符串我想要获取页码:
$scope.projects.next
可以等于......
我试过这个:
$scope.projects.next.split('=')[1].indexOf("page")
但是,这仅适用于字符串2.如何更改此项以确保它找到页码,无论可以添加哪个位置或将来的参数?
我也尝试过:
$scope.projects.next.indexOf("page")
但是这让52
不明白为什么。
答案 0 :(得分:5)
您可以使用正则表达式:
/page=([0-9]+)/.exec($scope.projects.next)[1]
使用带有捕获组的正则表达式(()
中的位)作为页码,并在page=
之后捕获一个或多个数字。结果是一个数组,其中第一个元素是整个匹配,第二个元素是捕获组(这就是我们最后有[1]
的原因)。
答案 1 :(得分:3)
请参见此处:http://jsbin.com/gizalo/1/edit
从字符串
获取参数的函数function getParameterByName(name, string) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(string);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
<强>控制器强>
app.controller('firstCtrl', function($scope){
var stringa="/api/project/?currentuser=false&page=2";
var stringb="/api/project/?page=2";
$scope.a = getParameterByName('page', stringa);
$scope.b = getParameterByName('page', stringb);
});
答案 2 :(得分:1)
问题是,在第一个网址中有两个=符号,因此您的索引在第一个网址上将被输出1
$ scope.projects.next.split(&#39;页=&#39;)[1]
答案 3 :(得分:0)
这与AngularJS完全无关。但它也很简单,所以为什么不回答呢。拆分字符会分裂该字符的每个实例。您的最上面的字符串最终会变为['/api/project/?currentuser', 'false&page', '2']
,因此获取[1]('page')
的位置并不有用。将其拆分为?
。
答案 4 :(得分:0)
var start = $scope.projects.next.indexOf("page=");
var end = $scope.projects.next.indexOf("&");
var page;
if(end == -1) {
page = $scope.projects.next.substring(start+5);
} else {
page = $scope.projects.next.substring(start+5, end);
}
这也适用于?page = 17&amp; test = 2