class String
def clean
patterns = [
{:pattern => /[\s+|\/|\\]/, :replacement => '_' }, # replace whitespace and slashes with underscores
{:pattern => /[^a-z|0-9|_]/, :replacement => '' }, # remove non alphanumeric/underscore characters
{:pattern => /__*/, :replacement => '_' } # remove multiple underscores
]
cleaned = self.underscore
patterns.each { |set| cleaned.gsub!(set[:pattern], set[:replacement]) }
cleaned
end
end