if you actually mean to test $len($1) == 1 like the others are assuming, that should not be considered the behaviour of "ischar" imo.
The behaviour of the is* text matchers (isalpha, isalnum) don't test single characters, so if "ischar" would be misleading. "ischar" looks like you're asking the question: is $1 a set of characters? ..similar to "isalpha" (is $1 a set of alpha chars).
If this is really about testing a single char, you'd want if ($1 issinglechar), but that's just getting superfluous. Just use the len check if that's what you want.
If you mean something else, you need to *explain*. You can't expect people to understand you from a single line of an ambiguous example.