2016-04-21 2 views
0

У меня есть строка типа «ABCD000215», мне нужно разделить на строку и числовое значение отдельно. Мне нужно добавить разрыв между строкой и номеромразделительная строка и числовые в angularjs

мой код

<div class="box-label">{{item.stringVal}}</div> 

Результат будет как этот

ABCD 
000215 
+0

Вы пытались создать фильтр? Я думаю, они лучше всего подходят вам. https://docs.angularjs.org/tutorial/step_09 – Vivendi

+3

'' ABCD000215 ".match (/ \ d + | [a-z] +/ig)' –

ответ

2

Вы можете использовать угловую filter.

Html:

<body ng-controller="MainCtrl as main"> 
    <div class="box-label">{{main.stringVal | splitStringAndNumber}}</div> 
</body> 

JS:

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

app.controller('MainCtrl', function() { 
    this.stringVal = "ABCD12334234"; 
}); 

app.filter('splitStringAndNumber', function($filter){ 
    return function(string){ 
     var matches = string.match(/\d+|[a-z]+/ig); 
     return matches.join('\r\n'); 
    }; 
}); 

Вот пример: https://plnkr.co/edit/G6ltclPLxRpijruYjcqy?p=preview

+0

Ваш плунжер не работает. –

+1

Не знаете, что там произошло, похоже, сейчас работает. – carlcheel

0

Попробуйте

[a-z]+|\d+ 

Regex demo

Объяснение:
+: Один или более sample
|: Чередование/ИЛИ операнд sample
\: Игнорирует специальный символ sample

0

Здесь Проверить это Plunker I Created .. Надеюсь, что это помогает :)

var app = angular.module('app', []).filter('checkmark', function() { 

    return function(input, regex) { 
     var patt = new RegExp(regex);  
     var out = []; 
     for (var i = 0; i < input.length; i++){ 
      if(patt.test(input[i])) 
       out.push(input[i]); 
     }  
    return out; 
    }; 
}); 

app.controller('ctrl',function($scope){ 
    $scope.a = "ABCD000215"; 

}); 



<p>Sum: {{a | checkmark : '^[0-9]*$'}}</p> 

    <p>Sum: {{a | checkmark : '^[a-zA-Z]*$'}}</p> 

https://plnkr.co/edit/irKm0idyEy7jglYz5e6R?p=preview