1

我想在我的表单上有一个字段,它可以包含一些符号,如#、$ 等。但对于另一种情况,我只想有字母,没有任何符号。我如何剪切所有非字母符号并留下所有俄语西鲁尔字母

这是一个小例子:

我有字符串"йцукен#$%йцукен"

到底想得到"йцукен йцукен"

4

3 回答 3

4

尝试这个:

'йцукен#$%йцукен'.gsub(/\P{Cyrillic}++/, ' ')

解释:

\p{Cyrillic} 是西里尔字母的字符类。

\P{Cyrillic} 包含所有非西里尔字母的字符。

如果要保留其他字符,可以这样做:

'123йцукен#$%йцукен456'.gsub(/[^\p{Cyrillic}0-9]++/, ' ')
于 2013-05-07T11:57:13.290 回答
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
于 2013-05-07T12:16:23.307 回答
-1

您在问题中的表达式"йцукен#$%йцукен"不是有效的 Ruby 表达式。内#$双引号用作插值。如果您的意思是 string 'йцукен#$%йцукен',并且如果您想'#%$'用空格替换字符序列而不是仅仅删除它们,那么以下可以工作。

'йцукен#$%йцукен'.tr('#%$', " ").squeeze(" ")
# => "йцукен йцукен"
于 2013-05-07T12:52:30.137 回答