Я хочу найти строку, используя AngularJS по последнему символу строки. Я сделал поиск по первой букве. Я попытался lastIndexOf() и закончил, но не могу получить результат.

Этот работает нормально и для поиска первой буквы в строке.

var app = angular.module('filterSample', []);
app.controller('filterCtrl', function($scope) {

  $scope.data = {
    messages: ['first', 'second', '3rd', 'fourth', 'fifth']
  }

  $scope.startsWith = function(actual, expected) {
    var lowerStr = (actual + "").toLowerCase();
    return lowerStr.indexOf(expected.toLowerCase()) === 0;
  }
});
<!doctype html>
<html ng-app="filterSample">

<head>
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js">
  </script>
  <script src="example.js"></script>
</head>

<body>
  <div ng-controller="filterCtrl">
    <input type="text" ng-model="search" />
    <ul border="1px" ng-repeat="msg in data.messages | filter:search:startsWith">
      <li>{{msg}}</li>
    </ul>
  </div>
</body>

</html>
2
Elamparithi doodleblue 28 Авг 2017 в 12:21

3 ответа

Лучший ответ

Вы можете использовать endsWith() метод для проверки последнего символа строки:

endsWith() определяет, заканчивается ли строка символы указанной строки, возвращающие true или false как соответствующий.

var app = angular.module('filterSample', []);
app.controller('filterCtrl', function ($scope) {

    $scope.data = {
        messages: ['first', 'second', '3rd', 'fourth', 'fifth']
    }

    $scope.startsWith = function (actual, expected) {
        var lowerStr = (actual + "").toLowerCase();
        return lowerStr.endsWith(expected.toLowerCase());
    } 
});
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>

<div ng-app="filterSample" ng-controller="filterCtrl">
  <input type="text" ng-model="search" placeholder="Search by last char" />
    <ul border="1px" ng-repeat="msg in data.messages | filter:search:startsWith">
      <li>{{msg}}</li>
    </ul>
</div>
1
Mistalis 28 Авг 2017 в 09:32

Просто измените какой индекс вы ищете

$scope.endsWith = function (actual, expected) {
  var lowerStr = (actual + "").toLowerCase();
  return lowerStr.indexOf(expected.toLowerCase()) === (lowerStr.length - 1);
}
0
insider 28 Авг 2017 в 09:23

Вы можете использовать charAt

var lastChar = myString.charAt(myString.length-1);
0
Jayanti Lal 28 Авг 2017 в 09:58