我想在我的表单上有一个字段,它可以包含一些符号,如#,$等。但对于另一种情况,我想只有字母,没有任何符号。如何删除所有非字母符号,并保留所有俄语字母
下面是一个小示例:
我有string "йцукен#$%йцукен"
最后,我想得到"йцукен йцукен"
发布于 2013-05-07 19:57:13
试试这个:
'йцукен#$%йцукен'.gsub(/\P{Cyrillic}++/, ' ')解释:
\P{西里尔字母}是西里尔字母的字符类。
\P{西里尔字母}包含非西里尔字母的所有字符。
如果你想保留其他字符,你可以这样做:
'123йцукен#$%йцукен456'.gsub(/[^\p{Cyrillic}0-9]++/, ' ')发布于 2013-05-07 20:16:23
使用允许的字符列表进行暴力破解
def filter(input, allowed)
input.chars.inject('') do |result, char|
result << char if allowed.include? char
result
end
end
test_string = 'abc$6&йцxyz'
allowed_characters = 'abcxyzйц'
puts filter(test_string, allowed_characters)
=> abcйцxyz发布于 2013-05-07 20:52:30
问题中的表达式"йцукен#$%йцукен"不是有效的Ruby表达式。双引号内的#$用作插值。如果你指的是一个字符串'йцукен#$%йцукен',如果你想用一个空格代替像'#%$'这样的字符序列,而不仅仅是删除它们,那么,下面的方法是可行的。
'йцукен#$%йцукен'.tr('#%$', " ").squeeze(" ")
# => "йцукен йцукен"https://stackoverflow.com/questions/16418222
复制相似问题