用其索引替换特殊字符

时间:2016-04-02 10:33:19

标签: ruby string

我需要用索引替换字符串中的所有特殊字符。 例如,

"I-need_to@change$all%special^characters^"

应该成为:

"I1need6to9change16all20special28characters39"

所有特殊字符的索引都不同。 我检查了很多链接replacing all with single characteroccurances of a character。 我找到了非常相似的链接,但我不想采用这些replace its index number,因为我需要替换所有特殊字符。

我也尝试过这样的事情:

str.gsub!(/[^0-9A-Za-z]/, '')

这里str是我的示例字符串。 因为这会替换所有字符但是有空格,我想要索引而不是空格。要么所有特殊字符还是这七个

\/*[]:?

我需要主要更换这七个,但如果我们更换所有这些就行了。

我需要一种更简单的方法。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用全局变量$`gsub的块形式:

irb> str = "I-need_to@change$all%special^characters^"
=> "I-need_to@change$all%special^characters^"
irb> str.gsub(/[^0-9A-Za-z]/) { $`.length }
=> "I1need6to9change16all20special28characters39"