Skip to content

Instantly share code, notes, and snippets.

@awesome
Created January 7, 2020 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save awesome/29650ba2fa9f00a8d602910a9b90e955 to your computer and use it in GitHub Desktop.
Save awesome/29650ba2fa9f00a8d602910a9b90e955 to your computer and use it in GitHub Desktop.
Replace non-word-characters with underscore or dash; without preceding or trailing underscores or dashes.
def format_join(string, joiner=' ')
string.split(/\W/).reject(&:empty?).join(joiner.to_s)
end
# $ ruby -v
# ruby 2.1.9p490 (2016-03-30 revision 54437) [x86_64-darwin18.0]
#
# $ irb
# irb(main):001:0> def format_join(string, joiner=' ')
# irb(main):002:1> string.split(/\W/).reject(&:empty?).join(joiner.to_s)
# irb(main):003:1> end
# => :format_join
# …
# irb(main):005:0> str = 'request.headers["Accept-Language"]'
# => "request.headers[\"Accept-Language\"]"
#
# irb(main):006:0> format_join str
# => "request headers Accept Language"
#
# irb(main):007:0> str = ' req u est.hea ders["Accept-Lang uage"] '
# => " req u est.hea ders[\"Accept-Lang uage\"] "
#
# irb(main):008:0> format_join str
# => "req u est hea ders Accept Lang uage"
#
# irb(main):009:0> format_join str, '_'
# => "req_u_est_hea_ders_Accept_Lang_uage"
#
# irb(main):010:0> format_join str, '-'
# => "req-u-est-hea-ders-Accept-Lang-uage"
#
# irb(main):011:0> format_join str, '_-_-_'
# => "req_-_-_u_-_-_est_-_-_hea_-_-_ders_-_-_Accept_-_-_Lang_-_-_uage"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment