使用 sed 和 tr unix 实用程序(从您的终端)...
echo "CamelCase" | sed -e 's/\([A-Z]\)/-\1/g' -e 's/^-//' | tr '-' '_' | tr '[:lower:]' '[:upper:]'
如果您的驼峰式字符串末尾带有“ID”并且您希望保持这种状态,请使用这个...
echo "CamelCaseID" | sed -e 's/\([A-Z]\)/-\1/g' -e 's/^-//' | tr '-' '_' | tr '[:lower:]' '[:upper:]' | sed -e 's/I_D$/ID/g'
通过在 ruby 中扩展 String 类...
class String
def camelcase_to_underscore
self.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
upcase
end
end
现在,您可以对任何字符串执行 camelcase_to_underscore 方法。例子:
>> "CamelCase".camelcase_to_underscore
=> "CAMEL_CASE"