`
远东之夜
  • 浏览: 7812 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

骆驼法则字符串与下划线字符串规则转换工具

阅读更多

package com.tianmushanlu.util;

import org.apache.commons.lang.StringUtils;

/**
 * 骆驼法则字符串与下划线字符串规则转换工具
 * 
 * 
 *
 */
public class CamelCaseUtils {
	private static final char SEPARATOR = '_';

	/**
	 * 骆驼法则字符串转换为下划线标准格式
	 * 
	 * @param s
	 * @return
	 */
	public static String toUngerScoreCase(String s) {
		if (StringUtils.isBlank(s)) {
			return null;
		}
		StringBuffer sb = new StringBuffer();

		boolean upperCase = false;

		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			boolean nextUperCase = true;
			if (i < (s.length() - 1)) {
				nextUperCase = Character.isUpperCase(s.charAt(i + 1));
			}

			if ((i > 0) && Character.isUpperCase(c)) {

				if (!upperCase || !nextUperCase) {
					sb.append(SEPARATOR);
				}
				upperCase = true;
			} else {
				upperCase = false;
			}
			sb.append(Character.toLowerCase(c));
		}
		return sb.toString();
	}

	/**
	 * 下划线命名字符串格式转换为骆驼法则格式
	 * 
	 * @param s
	 * @return
	 */
	public static String toCamelCase(String s) {
		if (StringUtils.isBlank(s)) {
			return null;
		}

		s = s.toLowerCase();
		StringBuffer sb = new StringBuffer();
		boolean upperCase = false;
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if (c == SEPARATOR) {
				upperCase = true;
			} else if (upperCase) {
				sb.append(Character.toUpperCase(c));
				upperCase = false;
			} else {
				sb.append(c);
			}
		}
		return sb.toString();
	}

	/**
	 * 下划线命名字符串格式转换为骆驼法则格式 首字母大写
	 * 
	 * @param s
	 * @return
	 */
	public static String toCamelAndFirstLetterCase(String s) {
		if (StringUtils.isBlank(s)) {
			return null;
		}
		s = toCamelCase(s);
		return s.substring(0, 1).toUpperCase()+s.substring(1);
	}

	/**
	 * 测试main方法
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("toUngerScoreCase:" + toUngerScoreCase("tianMuShanLu"));//tian_mu_shan_lu
		System.out.println("toCamelCase:" + toCamelCase("tian_mu_shan_lu"));//tianMuShanLu
		System.out.println("toCamelAndFirstLettersCase:" + toCamelAndFirstLetterCase("tian_mu_shan_lu"));//TianMuShanLu
	}
}


分享到:
评论

相关推荐

    underscore2camelCase下划线命名驼峰式命名转换器

    "underscore2camelCase下划线命名驼峰式命名转换器"是专门针对编程中的命名规则转换工具,尤其适用于JavaScript开发。这个工具可以帮助开发者将下划线分隔的命名(例如"example_name")转换为驼峰式命名(例如...

    jquery_string_helper:一些字符串助手方法的 Jquery 插件

    我们使用相同的 Ruby on Rails Active 支持字符串辅助方法来简化字符串操作。 #A Jquery Plugins For Some String Helper methods like Camelize, Underscore, Dasherize, Classify, Ordinalize, ForeignKey 所有...

    camelcase:将dashdotunderscorespace分隔的字符串转换为camelCase

    将破折号/点号/下划线/空格分隔的字符串转换为camelCase或PascalCase: foo-bar → fooBar 正确处理Unicode字符串。 安装 $ npm install camelcase 如果您需要支持Firefox &lt;78 xss=removed&gt; 'fooBar' camelCase ( '...

    骆驼命名法

    此外,还有另一种命名规则叫做匈牙利命名法,它与骆驼命名法有所不同。 #### 二、骆驼命名法详解 ##### 1. 小驼峰命名法(lowerCamelCase) 小驼峰命名法常用于变量命名。它的特点是:首字母小写,后续每个单词首...

    匈牙利,骆驼,帕斯卡命名法规范 (2).pdf

    与下划线命名法(如`print_employee_paychecks()`)相比,骆驼命名法更易于阅读,尤其是在长函数或变量名中。 第三,帕斯卡命名法与骆驼命名法类似,但所有单词的首字母都大写,如`DisplayInfo()`和`UserName`。在...

    匈牙利,骆驼,帕斯卡命名法规范.pdf

    例如,`m_lpszStr`表示成员变量,是一个长指针,指向零终止的字符串。在Windows Forms应用中,控件的命名通常遵循匈牙利命名法,如TextBox类型的控件前缀为`txt`,如`txtCustomerName`,Button类型的控件前缀为`btn`...

    匈牙利,骆驼,帕斯卡命名法规范.docx

    例如,`m_lpszStr`表示成员变量,是一个长指针,指向以零字符结束的字符串。在Windows Form应用中,控件命名通常遵循匈牙利命名法,如TextBox类型的控件前缀为`txt`,如`txtCustomerName`,Button类型的控件前缀为`...

    c语言命名规则

    例如,`lpszStr`表示指向一个零结尾字符串的长指针,其中`l`表示长整型,`psz`表示字符串指针,这种命名方式能够帮助开发者快速理解变量的类型和用途。 **骆驼命名法**近年来受到广泛欢迎,尤其是在新的函数库和...

    常见命名规则

    例如,`lpszStr`这个变量名就表明它是一个长指针,指向一个以'\0'结尾的字符串。然而,这种命名方式在现代编程中逐渐被其他简洁的命名风格所取代。 骆驼命名法,又称为驼峰命名法,是目前广泛接受的命名规则之一。...

    snake_camel_switch:在蛇和骆驼之间切换

    用户可以输入字符串或者选择一段代码,然后使用该工具进行转换。这在处理JSON数据、API接口设计或者与使用不同命名约定的团队合作时尤其有用。 项目的源代码在"snake_camel_switch-master"文件夹中,我们可以期待...

    匈牙利,骆驼,帕斯卡命名法规范 (2).docx

    例如,`m_lpszStr`表示成员变量,是一个长指针,指向以0结尾的字符串。在Windows Form应用中,控件名通常会根据控件类型采用匈牙利命名法,如TextBox类型的控件前缀为`txt`,Button类型的控件前缀为`btn`。匈牙利...

    node-arr-camelize:骆驼数组的内容

    在JavaScript编程语言中,"node-arr-camelize"是一个工具函数,用于将字符串数组转换成驼峰式(CamelCase)字符串。这个函数被称为`arrCamelize`,它能够处理一个包含多个单词的数组,并将这些单词组合成一个符合...

    gson包(jar下载直接使用)

    Gson包,全称为Google Gson,是一个开源Java库,由Google提供,用于将Java对象转换为JSON(JavaScript Object Notation)格式的字符串,反之亦然。这个强大的库使得在Java应用中处理JSON数据变得极其简单,无论是...

    c#项目的命名规范

    例如,`i`代表整型,`s`代表字符串,如`iMyData`。然而,现代C#编程中更倾向于避免使用匈牙利命名规则,因为它可能增加代码的冗余并降低可读性。 #### 变量、常量、数组与枚举的命名 - **变量**:应使用骆驼命名...

    编写代码命名规范

    - **例子:** `m_lpszStr` 表示指向一个以空字符结尾的字符串的长指针成员变量。 **在Windows Form应用中的使用:** - **TextBox类型:** 前缀加`txt`,例如`txtCustomerName`、`txtAddress`。 - **Button类型:** ...

    java笔记心得

    #### 字符串与字符操作 - **字符串转换**:`String inputStr = scanner.next().toUpperCase();` 从用户输入中获取字符串,并将其转换为大写形式存储在 `inputStr` 变量中。 - **字符串转字符数组**:`char[] input...

    Java自学笔记

    另一方面,char存储单个字符,而String是表示字符串的类,它可以存储一个或多个字符。String具备面向对象的特性,可以调用方法,如length()来获取字符串长度。 在Java中,变量使用有一些特定规则:它们需要先声明后...

    第2章C#4.0编程基础

    变量命名应遵循一定的规则,避免使用关键字,以字母或下划线开头,使用骆驼命名法组合多个单词。 常量与变量相反,它的值在程序运行过程中不会改变。声明常量时,使用`const`关键字,如`const int MAX_SIZE = 100;`...

    变量的用法

    “s”表示字符串等。这种命名法非常详细地标示了变量的属性,从而增加了代码的可读性。这种命名风格在早期的Windows编程中非常常见,不过随着编程语言的发展,其使用逐渐减少。 接下来是骆驼命名法,它是一种以单词...

    java/c#/js编程命名规范

    匈牙利命名法是一种较早的命名规范,强调在变量名前加上类型的前缀,如`m_lpszStr`表示成员变量指向字符串。这种方法的优点在于能立即识别变量的类型,但其缺点是可能使变量名过长,影响代码的整洁度。在现代编程...

Global site tag (gtag.js) - Google Analytics