58 lines
1.2 KiB
JavaScript
58 lines
1.2 KiB
JavaScript
(function () {
|
|
'use strict';
|
|
|
|
// take :: Int -> Text -> Text
|
|
function take(n, s) {
|
|
return s.substr(0, n);
|
|
}
|
|
|
|
// drop :: Int -> Text -> Text
|
|
function drop(n, s) {
|
|
return s.substr(n);
|
|
}
|
|
|
|
|
|
// init :: Text -> Text
|
|
function init(s) {
|
|
var n = s.length;
|
|
return (n > 0 ? s.substr(0, n - 1) : undefined);
|
|
}
|
|
|
|
// breakOn :: Text -> Text -> (Text, Text)
|
|
function breakOn(strPattern, s) {
|
|
var i = s.indexOf(strPattern);
|
|
return i === -1 ? [strPattern, ''] : [s.substr(0, i), s.substr(i)];
|
|
}
|
|
|
|
|
|
var str = '一二三四五六七八九十';
|
|
|
|
|
|
return JSON.stringify({
|
|
|
|
'from n in, of m length': (function (n, m) {
|
|
return take(m, drop(n, str));
|
|
})(4, 3),
|
|
|
|
|
|
'from n in, up to end' :(function (n) {
|
|
return drop(n, str);
|
|
})(3),
|
|
|
|
|
|
'all but last' : init(str),
|
|
|
|
|
|
'from matching char, of m length' : (function (pattern, s, n) {
|
|
return take(n, breakOn(pattern, s)[1]);
|
|
})('五', str, 3),
|
|
|
|
|
|
'from matching string, of m length':(function (pattern, s, n) {
|
|
return take(n, breakOn(pattern, s)[1]);
|
|
})('六七', str, 4)
|
|
|
|
}, null, 2);
|
|
|
|
})();
|