UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

26 lines (25 loc) 898 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.substr = substr; function substr(str, start, len) { // discuss at: https://locutus.io/awk/substr/ // parity verified: GNU AWK 5.3 // original by: Kevin van Zonneveld (https://kvz.io) // note 1: AWK uses 1-based indexing, so start=1 is the first character // example 1: substr('hello', 2, 3) // returns 1: 'ell' // example 2: substr('hello', 1, 2) // returns 2: 'he' // example 3: substr('hello', 3) // returns 3: 'llo' if (str === undefined || str === null) { return ''; } const s = String(str); // AWK uses 1-based indexing const startIdx = Math.max(0, start - 1); if (len === undefined) { return s.substring(startIdx); } return s.substring(startIdx, startIdx + len); }