Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:从英语或阿拉伯语字符串中清除特殊字符_Ruby On Rails_Ruby_Utf 8 - Fatal编程技术网

Ruby on rails Rails:从英语或阿拉伯语字符串中清除特殊字符

Ruby on rails Rails:从英语或阿拉伯语字符串中清除特殊字符,ruby-on-rails,ruby,utf-8,Ruby On Rails,Ruby,Utf 8,我想清除英语或阿拉伯语字符串中的特殊字符。例如,下例中的“–”是一个特殊字符,转换为UTF-8时显示“?” 文件名:1-机械图纸-第1部分应类似于1-机械图纸第1部分 本次码码码>从本次码码码>从本次码码码>应该是本次码码>应该是本次码>从从本次码码码>从本次码码码>应该是本次码码码码码码>应该是本次码码码>从从本次码码码>从本次码码码>从从本次码>从从从本次码码>从从从从从本次码>从从本次码>从从从从本次码>从从从从从从从从本次码码码>从从从从本次码>从从从从从从从从本次码码码>从从从从从从从

我想清除英语或阿拉伯语字符串中的特殊字符。例如,下例中的“–”是一个特殊字符,转换为UTF-8时显示“?”

文件名:
1-机械图纸-第1部分
应类似于
1-机械图纸第1部分


本次码码码>从本次码码码>从本次码码码>应该是本次码码>应该是本次码>从从本次码码码>从本次码码码>应该是本次码码码码码码>应该是本次码码码>从从本次码码码>从本次码码码>从从本次码>从从从本次码码>从从从从从本次码>从从本次码>从从从从本次码>从从从从从从从从本次码码码>从从从从本次码>从从从从从从从从本次码码码>从从从从从从从从从从从从从本次码>从从从从从从从从从从从从从本次码>从从从从从从从从从从从从从从从从从从本次码>从从从从从从从从从从从从从从从从从从从从从从从从从从从从从从>这在某种程度上是对轮子的重新发明,但您可以这样做,以获得您在问题中想要的输出:

def clean_file name
  result = File.basename(name,".*")
  result.gsub!(/[é–]\s?/,'')
  result
end
将[]中的位替换为您认为在文件名中不合适的字符,如é等。但要注意两件事:

  • 使用如上所述的黑名单方法可能意味着您留下了不想要的字符-使用像\W这样的白名单方法来捕获所有非单词字符更为正常,这至少在ruby 1.9中是有效的,但这可能是导致1.8出现问题的原因
  • 在名称中留下空格可能会导致问题,因此您可能至少应该删除“”和downcase
您能否更具体地说明如何定义特殊角色?什么使
-
特别?当然。我需要在上传之前清理文件名。我用的是回形针的音译文件名。工作正常。问题是当我运行以下gsub来清除文件名时。它可以很好地清洗,但不能清洗特殊字符。“1-机械图纸-第1部分应类似于1-机械图纸第1部分”。挤压(“”.gsub(“”,“,”).gsub(/\W/,”)。downcase我的应用程序支持不同语言的文件名请检查我尝试了上述方法。通过使用特殊字符,它还可以清除阿拉伯字符。此外,目前我们正在使用ruby 1.8.7