我想在我的表单上有一个字段,它可以包含一些符号,如#,$等。但对于另一种情况,我想只有字母,没有任何符号。我如何剪切所有非字母符号并留下所有俄语cyrullic字母
这是一个小例子:
我有字符串"йцукен#$%йцукен"
最终希望获得"йцукен йцукен"
答案 0 :(得分:4)
试试这个:
'йцукен#$%йцукен'.gsub(/\P{Cyrillic}++/, ' ')
解释:
\ p {Cyrillic}是西里尔字母的字符类。
\ P {Cyrillic}包含非西里尔字母的所有字符。
如果你想保留其他角色,你可以这样做:
'123йцукен#$%йцукен456'.gsub(/[^\p{Cyrillic}0-9]++/, ' ')
答案 1 :(得分:0)
使用允许字符列表的暴力
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
答案 2 :(得分:-1)
您在问题中使用的表达式"йцукен#$%йцукен"
不是有效的Ruby表达式。双引号内的#$
用作插值。如果您的意思是字符串'йцукен#$%йцукен'
,并且如果您想用空格替换'#%$'
之类的字符序列而不是仅删除它们,那么,以下内容可以正常工作。
'йцукен#$%йцукен'.tr('#%$', " ").squeeze(" ")
# => "йцукен йцукен"