过滤字符串

时间:2017-03-23 17:31:15

标签: angularjs

我正在学习angularjs并进行了一项练习,希望我使用角度过滤器以下列格式显示标题:

每个单词大写的第一个字母和另外的小写字母也在下面 从标题中删除任何非英文字母。例如:

名称为

的标题

“@@这是标题!!”

应改为

“这是一个标题”

我从一系列对象中获取每个标题,然后将它们呈现出来。

<div ng-repeat="obj in objects">
     <h3 class="panel-title">{{obj.Title}}</h3>
  </div>

我知道过滤器接收一个数组并通过它过滤。但这需要我过滤字符串。 一直在寻找,我该怎么做?

2 个答案:

答案 0 :(得分:0)

&#13;
&#13;
angular.module('app', []).filter('myFilter', function(){
  return function(input){
    if(!input)
      return;
    
    var out = '';
    var english = /^[A-Za-z0-9 ]*$/;
    for(var letter of input)
      if(english.test(letter))
        out += letter;
        
    var result = '';    
    for(var i = 0; i < out.length; i++)
      result += out[i][(i === 0 || out[i-1] == ' ') ? 'toUpperCase' : 'toLowerCase']();
    
    return result;
  }
})
&#13;
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>

<body ng-app="app">  
   <input ng-init='text="@@THIS is a Title!!"' type='text' ng-model='text'>
   <p>{{text | myFilter}}</p>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

请参考下面的小提琴

http://jsfiddle.net/HB7LU/28315/

  <div ng-controller="MyCtrl">
Hello, {{ name | ordinal|capitalize }}
</div>


var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
 //myApp.factory('myService', function() {});

  function MyCtrl($scope) {
$scope.name = 'Super hero!!12@@3';
  }

      myApp.filter('ordinal', function() {

// Create the return function
 // set the required parameter name to **number**
 return function(strTitle) {

// Ensure that the passed in data is a number


  // If the data is not a number or is less than one (thus not having a     cardinal value) return it unmodified.
   strTitle=strTitle.replace(/[^a-zA-Z ]/g, "")
   return strTitle;


}
   });

  myApp.filter('capitalize', function() {  
 return function(input){
if(input.indexOf(' ') !== -1){
  var inputPieces,
      i;

  input = input.toLowerCase();
  inputPieces = input.split(' ');

  for(i = 0; i < inputPieces.length; i++){
    inputPieces[i] = capitalizeString(inputPieces[i]);
  }

  return inputPieces.toString().replace(/,/g, ' ');
}
else {
  input = input.toLowerCase();
  return capitalizeString(input);
}

function capitalizeString(inputString){
  return inputString.substring(0,1).toUpperCase() + inputString.substring(1);
}
};


  });