Тема: JS: Разрезание строк на фрагменты заданной длины
Нашел в своих закромах код, который решает задачу разрезания строк на фрагменты заданной длины.
Краткое описание:
String#splitLeft(n)
Разрезать строку на фрагменты длиной n, начиная сначала исходной строки. Результатом является массив строк длиной не более n символов.String#splitRight(n)
Разрезать строку на фрагменты длиной n, начиная с конца исходной строки. Результатом является массив строк длиной не более n символов.
Исходный код:
(function()
{
function L(n)
{
return L[n] = L[n] || new RegExp('.{' + n + '}|.+', 'g');
};
function R(n)
{
return R[n] = R[n] || new RegExp('(?=(?:.{' + n + '})+$)');
};
function split(string, n, method, re)
{
n = Math.abs(Number(n) || 0);
if ( n <= 0 ) {
return [];
}
if ( n == 1 ) {
return string.split('');
}
return string[method](re);
};
String.prototype.splitLeft = function(n)
{
var re = L(n);
// return split(this, n, 'match', re);
return [].concat(split(this, n, 'match', re));
};
String.prototype.splitRight = function(n)
{
var re = R(n);
return split(this, n, 'split', re);
};
})();
Пример использования:
function demo(n, s)
{
var sl = s.splitLeft(n);
var sr = s.splitRight(n);
alert([
'Width : ' + n,
'Origin : ' + s,
'Left : ' + sl,
'Right : ' + sr,
].join('\n'));
};
var s = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
demo(16, s);
demo(10, s);

