@visulima/string
Version:
Functions for manipulating strings.
2 lines (1 loc) • 1.09 kB
JavaScript
const i=/[.*+?^${}()|[\]\\]/g,E=/[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DBF\u4E00-\u9FFC\uF900-\uFA6D\uFA70-\uFAD9]|\uD81B[\uDFF0\uDFF1]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]/,a=/[\p{P}\p{Z}]/u,c=D=>D.replaceAll(i,String.raw`\$&`),C=(D,e)=>e.some(t=>D>=t[0]&&D<=t[1]),h=D=>E.test(D),p=D=>a.test(D),f=(D,e)=>{const t=[];if(!Array.isArray(e))return t;if(e.forEach(u=>{if(typeof u!="string"||u.length===0)return;let n=0,r;for(;(r=D.indexOf(u,n))>-1;){const o=r+u.length-1;t.push([r,o]),n=r+1}}),t.length===0)return[];t.sort((u,n)=>u[0]-n[0]);const s=[];let F;for(const u of t)F===void 0?F=[...u]:u[0]<=F[1]+1?F[1]=Math.max(F[1],u[1]):(s.push(F),F=[...u]);return F!==void 0&&s.push(F),s};export{c as escapeRegExp,f as findStringOccurrences,h as hasChinese,p as hasPunctuationOrSpace,C as inRange};