ReplaceAll
Less than 1 minuteTC-Medium
TODO
题目
实现 ReplaceAll<S, From, To>
将一个字符串 S
中的所有子字符串 From
替换为 To
。
例如
type replaced = ReplaceAll<'t y p e s', ' ', ''> // 期望是 'types'
解答
type ReplaceAll<S extends string, From extends string, To extends string> =
From extends ''
? S
: S extends `${infer Head}${From}${infer Tail}`
? `${Head}${To}${ReplaceAll<Tail, From, To>}` //只替换剩下部分, 防止前面重新构成的匹配影响结果
: S
注意: 如果替换入的To
构成了新的From
, 则不应该替换.
比如替换aaaaaa中的aa为a, 期望获得aaa, 而不是a.