Ruby gsub:有更好的方法

Rog*_*ger 4 ruby

我需要删除所有前导和尾随非数字字符.这就是我提出的.是否有更好的实施.

puts s.gsub(/^\D+/,'').gsub(/\D+$/,'')
Run Code Online (Sandbox Code Playgroud)

Ale*_*ner 7

而不是消除你不想要的东西,通常更清楚地选择你想要的东西(使用括号).此外,这只需要一次正则表达式评估:

s.match(/^\D*(.*?)\D*$/)[1]
Run Code Online (Sandbox Code Playgroud)

或者,这方便的简写:

s[/^\D*(.*?)\D*$/, 1]
Run Code Online (Sandbox Code Playgroud)

  • 或者可能是一个更简单的正则表达式,具体取决于您拥有的字符串类型.`"abc123def"[/\d + /]#=>"123"` (2认同)