Skip to content

去除两端空白字符

约 344 字大约 1 分钟

2022-12-01

题目

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 '>, ''>>,
]

参考