文档章节

驼峰命名法和下划线风格的互转

crazymus
 crazymus
发布于 2015/10/16 15:14
字数 356
阅读 4012
收藏 4
php

偶然遇到这个问题,感觉有些意思,于是研究了一下。

下划线转驼峰比较简单,直接根据下划线打散成数组,每个子项首字符转大写,再做字符串拼接即可。

驼峰转下划线风格,稍微复杂一些。刚开始我没有思路,后来想到,可以遍历字符串,遇到大写字母将其转换成小写,并在前面加一个下划线。

最终实现:

class CamelTool{
	
	//驼峰命名法转下划线风格
	public static function toUnderScore($str){
		
		$array = array();
		for($i=0;$i<strlen($str);$i++){
			if($str[$i] == strtolower($str[$i])){
				$array[] = $str[$i];
			}else{
				if($i>0){
					$array[] = '_';
				}
				$array[] = strtolower($str[$i]);
			}
		}
		
		$result = implode('',$array);
		return $result;
	}
	
	//下划线风格转驼峰命名法  
	public static function toCamelCase($str){
		
		$array = explode('_', $str);
		$result = '';
		foreach($array as $value){
			$result.= ucfirst($value);
		}
		
		return $result;
	}
	
}

遍历字符串,用到的不多,但PHP提供了这个强大的特性:

for($i=0; $i< strlen($str);$i++){
  echo $str[$i];
}

我们可以像遍历数组一样来操作字符串的每一个字符。

如何检测一个字母是大写?刚开始我准备用正则表达式,但很快想到更简单的方式:

$str != strtolower($str);

如果该条件成立,$str 一定是大写字母。

测试代码是否正确运行:

$str = 'user_point_log';
$result = CamelTool::toCamelCase($str);
//输出 UserPointLog
echo $result;

echo '<br/>';

$str = 'UserPointLog';
$result = CamelTool::toUnderScore($str);
//输出 user_point_log
echo $result;

 

© 著作权归作者所有

crazymus

crazymus

粉丝 71
博文 80
码字总数 111033
作品 8
武汉
后端工程师
私信 提问
Google java编程风格指南

学习 1. 源文件是UTF-8编码 2. 源文件顺序: 许可证 --->package----->import ---->顶级类, 用空行分开 3. import顺序:静态导入--->google--->第三方(sun,org...)--->java --->javax; 4......

pearl2015
2016/01/07
83
0
区块链 100 讲:风格指南 (style guide) 说明----solidity 语言中文文档

1 概 述 本指南旨在约定solidity代码的编码规范。本指南是不断变化演进的,旧的、过时的编码规范会被淘汰, 而新的、有用的规范会被添加进来。 许多项目会实施他们自己的编码风格指南。如遇冲...

yanyan
2018/07/10
0
0
【朝花夕拾】Android编码风格拾遗

结合51CTO学院中张凌华老师讲的编码风格课程,对自己平时工作中的形成的一些编码风格做一些总结。 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Planning&Log - 计划,...

宋者为王
2016/05/30
0
0
android 开发 命名规范

转自:http://www.cnblogs.com/ycxyyzw/p/4103284.html 标识符命名法 标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。 2 帕斯卡...

farina
2016/05/11
125
0
开发笔记14 | Java 代码规约第 4 条

返回规约清单列表 规约类型:编程规约 - 命名风格 规约级别:强制 规约描述:方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式 正例: localValue / g...

银时
2018/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
25分钟前
4
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
215
9
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
10
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部