Skip to content

Drop Char

约 334 字大约 1 分钟

2022-12-01

题目

Github: DropChar

从字符串中剔除指定字符。

type Butterfly = DropChar<' b u t t e r f l y ! ', ' '> // 'butterfly!'

解题思路

这个挑战相对来说很简单,可以通过 模板字面量类型 和 条件类型 快速解决。

需要注意的是, 当C'' 时,可能会导致递归太深的问题,因此当 C'' 时,需要直接返回 S

答案

type DropChar<S extends string, C extends string> = C extends ''
  ? S
  : S extends `${infer L}${C}${infer R}`
    ? DropChar<`${L}${R}`, C>
    : S

验证

type 
cases
= [
// @ts-expect-error
Expect
<
Equal
<
DropChar
<'butter fly!', ''>, 'butterfly!'>>,
Expect
<
Equal
<
DropChar
<'butter fly!', ' '>, 'butterfly!'>>,
Expect
<
Equal
<
DropChar
<'butter fly!', '!'>, 'butter fly'>>,
Expect
<
Equal
<
DropChar
<' butter fly! ', ' '>, 'butterfly!'>>,
Expect
<
Equal
<
DropChar
<' b u t t e r f l y ! ', ' '>, 'butterfly!'>>,
Expect
<
Equal
<
DropChar
<' b u t t e r f l y ! ', 'b'>, ' u t t e r f l y ! '>>,
Expect
<
Equal
<
DropChar
<' b u t t e r f l y ! ', 't'>, ' b u e r f l y ! '>>,
]

参考