#JavaScript (ES6), <s>58</s> 56 bytes _Saved 2 bytes thanks to @l4m2 / @Downgoat_ Takes input in currying syntax `(s)(c)`. <!-- language-all: lang-javascript --> s=>c=>s.replace(u=/./g,x=>u=x==c?'':u?x:x.toUpperCase()) [Try it online!](https://tio.run/##Zc9La8JAFIbhfX@Fk4UmkAtuhYlYwVawtvRCd0qcnIS0k5wwF01/fToTrG3Hs3154Dsf2TGTTFStihrMoS9oL2nKaCpjAS3PGPiaJnFShh1NNe0oZfPJZKbn3ayLFb61LYhlJsEPgp5hI5FDzLH0C9@7B85xf0LBcy/wvb0XBKPLJclo6O823ziyhrDBkFefYGH4D1pZwxY3prruC3VUoooqZV105Uy/Q7VWrlvUu/WOcciEdbsrt6jXS1tdVyIpNOeEZa20kvyVxpW4MnlpqitPUIl8fNBqrJ718OX41xo59FutXk117ZPAA4eHaVF1kE8btHr6o40995XNW3Q1aU0mhENNJHnkR8gJuWw/6w3UL0PqvwE "JavaScript (Node.js) – Try It Online") ###Commented s => c => // given s and c s.replace(u = /./g, x => // initialize u to a RegExp; replace each character x in s with, u = // and update u to: x == c ? // if x is the separator: '' // an empty string : // else: u ? // if u is not an empty string: x // x unchanged : // else: x.toUpperCase() // x capitalized ) // end of replace()