去除两端空白字符
题目
Github: Trim
实现 Trim<T>
,它接受一个明确的字符串类型,并返回一个新字符串,其中两端的空白符都已被删除。
type trimed = Trim<' Hello World '> // 应推导出 'Hello World'
解题思路
此挑战的解题思路与 中等 > 去除左侧空白 类似,只是需要处理两端的空白字符。 因此我们可以将问题拆解为,先删除左边的空白字符,然后再删除右边的空白字符。
答案
type Whitespace = ' ' | '\n' | '\t'
type Trim<S extends string> =S extends `${Whitespace}${infer R}`
? Trim<R>
: S extends `${infer L}${Whitespace}`
? Trim<L>
: S
验证
验证
type cases = [
Expect<Equal<Trim<'str'>, 'str'>>,
Expect<Equal<Trim<' str'>, 'str'>>,
Expect<Equal<Trim<' str'>, 'str'>>,
Expect<Equal<Trim<'str '>, 'str'>>,
Expect<Equal<Trim<' str '>, 'str'>>,
Expect<Equal<Trim<' \n\t foo bar \t'>, 'foo bar'>>,
Expect<Equal<Trim<''>, ''>>,
Expect<Equal<Trim<' \n\t '>, ''>>,
]