Why not make “case” and “_” transparent so that they may be optionally used for documentation clarity, but from a programatic perspective these would all be the same:
FredFrog
fredFrog
fredfrog
fred_frog
f_e_d_f_r_o_g
FREDfrog
etc.
take any string, toLower, substitute _ for nothing, then compare strings.