Why does IndexOf() ignore the zero-width non-joiner char, but Replace() doesn't:
class Program
{
static void Main(string[] args)
{
const string zeroWidthNonJoiner = "\u200C";
string str = $"ab{zeroWidthNonJoiner}cd";
int index = str.IndexOf("bc"); //index = 1 (does ignore the zeroWidthNonJoiner)
string replaced = str.Replace("bc", "BC"); //replaced = "abcd" (does NOT ignore the zeroWidthNonJoiner)
}
}