While working on How to capitalize the first letter of each word in a string and trying to understand why certain characters were not considered letters I tried this:
StringCases["áéíóöőüű", _?LetterQ]
LetterQ::string: String expected at position 1 in LetterQ[Removed[$$Failure]]. >> LetterQ::string: String expected at position 1 in LetterQ[Removed[$$Failure]]. >> LetterQ::string: String expected at position 1 in LetterQ[Removed[$$Failure]]. >> General::stop: Further output of LetterQ::string will be suppressed during this calculation. >> {}
I then tried a Print function to see what was going on:
StringCases["áéíóöőüű", _?Print];
á é í ó ö ő ü ű
No errors. Then I tried a function that Prints, but returns True:
StringCases["áéíóöőüű", _?((Print["(", FullForm@#, ")"]; True) &)]
This produced interleaved lines of characters (expected) and Removed[$$Failure] (not expected). I can't include the output properly because of this StackExchange bug.
What is the cause of this?
Has it been fixed since version 7?
StringCases["áéíóöőüű", _?LetterQ] == Characters["áéíóöőüű"]$\endgroup$Removed[$$Failure]at all under Win7, v9.0.1. $\endgroup$