删除以"#"开头的单词,前n个单词除外

Sil*_*l05 0 ruby regex

给定一个字符串和一个整数n,我想删除第n次出现后以"#"开头的所有单词.

例如,如果n = 2且字符串为:

" 法国#Chamonix山脉以滑雪,高山攀登,跳跃基地,#滑翔伞,原始冒险和第一届冬奥会#Home闻名.这是一个冒险家和摄影师的天堂.看到这里,#Druis长期曝光,众多引人注目的"

那么结果应该是:

" 法国#Chamonix山脉以滑雪,高山攀登,跳垒,滑翔,原始冒险和第一届冬季奥运会而闻名.这是一个冒险家和摄影师的天堂.看到这里,长期曝光,其中一个引人注目"

前两个#-prefixed话,#Chamonix#Paragliding,被保留下来,但其余#-prefixed话,#Home#Druis,被拆除.

saw*_*awa 5

如果要删除"#"第n次出现后的所有单词,则:

string.gsub(/#\w+/).with_index(1){|s, i| i > n ? "" : s}
Run Code Online (Sandbox Code Playgroud)

  • 人们通常不会看到`gsub`返回一个枚举器.它的实用性很好的例子. (2认同)