mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-12-29 16:16:02 +00:00
37 lines
1013 B
TypeScript
37 lines
1013 B
TypeScript
import { reverseString } from 'utils/string';
|
|
|
|
export function extractSubstring(
|
|
input: string,
|
|
start: number,
|
|
length: number,
|
|
multiLine: boolean,
|
|
reverse: boolean
|
|
): string {
|
|
if (!input) return '';
|
|
// edge Cases
|
|
if (start <= 0) throw new Error('Start index must be greater than zero.');
|
|
if (length < 0)
|
|
throw new Error('Length value must be greater than or equal to zero.');
|
|
if (length === 0) return '';
|
|
|
|
let array: string[];
|
|
let result: string[] = [];
|
|
|
|
const extract = (str: string, start: number, length: number): string => {
|
|
const end = start - 1 + length;
|
|
if (start - 1 >= str.length) return '';
|
|
return str.substring(start - 1, Math.min(end, str.length));
|
|
};
|
|
|
|
if (!multiLine) {
|
|
result.push(extract(input, start, length));
|
|
} else {
|
|
array = input.split('\n');
|
|
for (const word of array) {
|
|
result.push(extract(word, start, length));
|
|
}
|
|
}
|
|
result = reverse ? result.map((word) => reverseString(word)) : result;
|
|
return result.join('\n');
|
|
}
|