Как получить число для отображения в моем пользовательском интерфейсе с пробелом после каждых 4 символов? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть 16-значное свойство, которое возвращается, например, (1234123412341234). Я хотел бы, чтобы он отображался в моем пользовательском интерфейсе с пробелом каждые 4 цифры, например (1234 1234 1234 1234). Я использую Angular JS, поэтому я ищу способ сделать это. Я почти уверен, что это либо пользовательский фильтр Angular, либо связанный с регулярными выражениями, но мои знания о них и о том, как их реализовать, ограничены.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Вы можете использовать регулярное выражение с lookahead.

Positive Lookahead ищет шаблон после знака равенства, но не включает его в совпадение.

x (? = Y)

Соответствует 'x', только если после 'x' следует 'y'.Это называется предвидением.

Например, /Jack(?=Sprat)/ соответствует «Джеку», только если за ним следует «Шпрот»./Jack(?=Sprat|Frost)/ соответствует «Джеку», только если за ним следуют «Килька» или «Мороз».Однако ни «Шпрот», ни «Мороз» не являются частью результатов матча.

function format(s) {
    return s.toString().replace(/\d{4}(?=.)/g, '$& ');
}

console.log(format(1234123412341234));
0 голосов
/ 06 сентября 2018

AngularJS фильтр прост в настройке. Просто примите один параметр и примените к нему любое форматирование JS. Вот рабочий пример:

var app = angular.module('myApp', []);
app.filter('myFilter', function() {
  return function(x) {
    return x.toString().replace(/\d{4}(?=.)/g, '$& '); // your format filter here
  };
});
app.controller('demoCtrl', function($scope) {
  $scope.test = 1234123412341234;
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
  <div ng-app="myApp" ng-controller="demoCtrl">
    {{test | myFilter}}
  </div>
</body>
</html>

(я взял код регулярного выражения Нины Шольц . Не стесняйтесь использовать любое другое регулярное выражение)

0 голосов
/ 06 сентября 2018

Вы можете использовать match(), а затем join() с пробелами.

var str = '1234123412341234';
var res = str.match(/.{1,4}/g).join(' ');
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...