Yuzhe's Blog

yuzhes

去除两端空白字符

去除两端空白字符

题目链接

题目

实现Trim<T>,它接受一个明确的字符串类型,并返回一个新字符串,其中两端的空白符都已被删除。

例如

type trimed = Trim<'  Hello World  '> // expected to be 'Hello World'

解答

本题与0106 - 去除左侧空白类似.

我们先仿写出 去除右侧空白的TrimRight

Trim就是TrimLeftTrimRight的组合。

type Whitespace = ' ' | '\n' | '\t'
type TrimLeft<S extends string> = S extends `${Whitespace}${infer R}` ? TrimLeft<R> : S
type TrimRight<S extends string> = S extends `${infer R}${Whitespace}` ? TrimRight<R> : S
type Trim<S extends string> = TrimLeft<TrimRight<S>>