Если у вас действительно есть массив (как вы заявляете), и это массив строк (я предполагаю), например.
foo = [ "hello", "42 cats!", "yöwza" ]
, то я могу себе представить, что вы либо хотите обновить каждую строку в массиве с новым значением, или что вы хотите измененный массив, который содержит только определенные строки.
Если прежний (вы хотите «чистый» каждая строка массива) вы можете сделать одно из следующих действий:
foo.each{ |s| s.gsub! /\p{^Alnum}/, '' } # Change every string in place…
bar = foo.map{ |s| s.gsub /\p{^Alnum}/, '' } # …or make an array of new strings
#=> [ "hello", "42cats", "yöwza" ]
Если последний (вы хотите, чтобы выбрать подмножество строк, где каждый матчей ваши критерии холдингового только буквенно-цифровой), вы можете использовать один из них:
# Select only those strings that contain ONLY alphanumerics
bar = foo.select{ |s| s =~ /\A\p{Alnum}+\z/ }
#=> [ "hello", "yöwza" ]
# Shorthand method for the same thing
bar = foo.grep /\A\p{Alnum}+\z/
#=> [ "hello", "yöwza" ]
в Ruby, регулярные выражения вида /\A………\z/
требуют всей строки, чтобы соответствовать, а \A
якорю регулярного выражения в начало строки а nd \z
анкеры до конца.
http://stackoverflow.com/questions/737475/how-i-can-delete-special-characters это ответит на 50% вашего вопроса. – Devjosh
Обычно мы говорим о строке с символами и массивом, имеющим разные данные, например объекты, числа или строки. У вас действительно есть массив (возможно, массив строк?) Или просто строка? – Phrogz
-1. Не столько для того, чтобы не пытаться это исправить, а потому, что вопрос бессмыслен по причине, заданной Фрогзом. –