Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 1x 1x 20x 20x | /** * Regular expression to split text into sentences based on common sentence-ending punctuation. * @internal */ const splitter = /(.*?(?:[.!?‼‽⁇⁈⁉:…]|\.\.\.)["'”’]?)(?:[\s\r\n]+|$)/gu; /** * Splits the input string into an array of sentences. * * End of sentences are found by looking for the following characters followed by * an optional closing quotation mark and terminated by white space or a end of line: * * | Character | Description | * | --------- | -------------------------- | * | ? | Question mark | * | : | Colon | * | [ | Opening square bracket | * | . | Period | * | ! | Exclamation mark | * | ? | Question mark | * | ‼ | Double exclamation mark | * | ‽ | Interrobang | * | ⁇ | Double question mark | * | ⁈ | Question exclamation mark | * | ⁉ | Exclamation question mark | * | : | Colon | * | … | Ellipsis | * | ... | Triple period | * * | Character | Description | * | --------- | -------------------------- | * | " | Double quotation mark | * | ' | Single quotation mark | * | ” | Right double quotation mark| * | ’ | Right single quotation mark| * @param input - The string to be split into sentences. * @returns An array of non-empty, trimmed sentences. * @example * ```ts * splitSentences("Hello! How are you? I'm 'OK.'"); // ["Hello!", "How are you?", "I'm 'OK.'"] * ``` * @group String * @category Deconstruction */ export function splitSentences(input: string): string[] { return input.split(splitter).filter((s) => s.trim().length > 0); } |