`
fantaxy025025
  • 浏览: 1247539 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

驼峰格式和下划线格式转换_translation between camel and snake format

 
阅读更多

 

驼峰格式和下划线格式转换_translation between camel and snake format

 

#1 驼峰转下划线格式

这个我一开始找了找现成的方法,比如这里:http://www.iteye.com/topic/1118302,但一眼看过去就非常的麻烦,难道这个操作要写好几十行代码么,我可很懒哦。

后来想到用正则直接处理。

>> $className = "HelloWorldRuby";

>> $snakeTableName = preg_replace('/(?<!\b)(?=[A-Z])/', "_", $className);

>> print_r($snakeTableName);
Hello_World_Ruby

>> $snakeTableNameLower = strtolower($snakeTableName);

>> print_r($snakeTableNameLower);
hello_world_ruby
 
1.9.3p194 :022 > className = "HelloWorldRuby"
 => "HelloWorldRuby" 
1.9.3p194 :023 > #classNameSnake = className.gsub(/(?<!\b)(?=[A-Z])/, "_"); #=> Error ruby的逆序环视支持不好
1.9.3p194 :024 >   classNameSnake = className.gsub(/(?=[A-Z])/, "_")
 => "_Hello_World_Ruby" 
1.9.3p194 :025 > classNameSnakeLower = classNameSnake.downcase[1..-1]
 => "hello_world_ruby"
 

蛇行转驼峰格式

这个其实就比较好做了,因为下划线作为分隔符号,可以方便的分出来。

但如果用正则的话,怎么做呢:

>>         $s = "hello_world_ruby";

>>         $s2 = preg_replace('/(?:^|_)([a-z])/e', "strtoupper('\\1')", $s);

>> print_r($s2)
HelloWorldRuby

 

1.9.3p194 :055 > s = "hello_world_ruby"
 => "hello_world_ruby" 
1.9.3p194 :056 > s.gsub(/(?:^|_)([a-z])/e, '\1')
 => "helloworldruby"

ruby中的替换没有/e选项,php和perl都有。

所以这里就不知道替换的时候如何对分组应用函数了(或者用ruby的话是应用block)?

谁知道的,请告知下吧!谢谢!

 

 

 

 

 

分享到:
评论
1 楼 c39274936 2012-11-29  
s = "hello_world_ruby"
s.split("_").map {|w| w.capitalize}.join

相关推荐

Global site tag (gtag.js) - Google Analytics