Type Challenges Judge

Capitalize Words

提出詳細

type Delimiter = ' ' | '.' | ',' type UppercaseAfterDelim<S extends string> = S extends `${infer T}${infer U}` ? T extends Delimiter // 先頭が区切り文字の場合 ? U extends `${infer V}${infer W}` // 区切り文字の後ろに文字がある場合 ? `${T}${Uppercase<V>}${UppercaseAfterDelim<W>}` // 区切り文字の後ろに文字がない場合 : S // 先頭が区切り文字でない場合 : `${T}${UppercaseAfterDelim<U>}` : '' type CapitalizeWords<S extends string> = S extends `${infer T}${infer U}` ? `${Uppercase<T>}${UppercaseAfterDelim<U>}` : ''
提出日時2023-08-14 10:22:46
問題Capitalize Words
ユーザーtekihei2317
ステータスAccepted
テストケース
import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect<Equal<CapitalizeWords<'foobar'>, 'Foobar'>>, Expect<Equal<CapitalizeWords<'FOOBAR'>, 'FOOBAR'>>, Expect<Equal<CapitalizeWords<'foo bar'>, 'Foo Bar'>>, Expect<Equal<CapitalizeWords<'foo bar hello world'>, 'Foo Bar Hello World'>>, Expect<Equal<CapitalizeWords<'foo bar.hello,world'>, 'Foo Bar.Hello,World'>>, Expect<Equal<CapitalizeWords<''>, ''>>, ]