UNPKG

locutus

Version:

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

38 lines (37 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.strcspn = strcspn; function strcspn(str, mask, start, length) { // discuss at: https://locutus.io/php/strcspn/ // parity verified: PHP 8.3 // original by: Brett Zamir (https://brett-zamir.me) // revised by: Theriault // example 1: strcspn('abcdefg123', '1234567890') // returns 1: 7 // example 2: strcspn('123abc', '1234567890') // returns 2: 0 // example 3: strcspn('abcdefg123', '1234567890', 1) // returns 3: 6 // example 4: strcspn('abcdefg123', '1234567890', -6, -5) // returns 4: 1 start = start || 0; length = typeof length === 'undefined' ? str.length : length || 0; if (start < 0) { start = str.length + start; } if (length < 0) { length = str.length - start + length; } const e = Math.min(str.length, start + length); if (start < 0 || start >= str.length || length <= 0) { return 0; } let lgth = 0; for (let i = start; i < e; i++) { if (mask.includes(str.charAt(i))) { break; } ++lgth; } return lgth; }