Хороший способ сделать это - использовать новые (ish) классы символов Unicode в регулярном выражении, такие как \P{L}
, чтобы соответствовать чему-либо, что не буква (на любом языке) в соответствии с юникода. К сожалению, похоже, что Ruby не поддерживает это, даже в 1.9.
Возможно, синтаксический анализатор регулярных выражений 1.9 достаточно умен, чтобы не совпадать с байтами, которые составляют специальные символы в символах Юникода, поэтому простое перечисление всех символов для удаления может работать. Это предполагает, что вы действительно можете перечислить все символы, которые вы хотите отфильтровать, что может быть намного больше, чем символы в ASCII, например, логическое нет, самолет и т.д ...