`
旭少版
  • 浏览: 87291 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

关于核心代码StringUtil里首字母大小写的bug

阅读更多
源码:
       /**
	 * 首字母大写
	 * @param realName
	 * @return
	 */
	public static String firstUpperCase(String realName) {
		return StringUtils.replaceChars(realName, realName.substring(0, 1),realName.substring(0, 1).toUpperCase());
	}

       /**
	 * 首字母小写
	 * @param realName
	 * @return
	 */
	public static String firstLowerCase(String realName) {
		return StringUtils.replaceChars(realName, realName.substring(0, 1),realName.substring(0, 1).toLowerCase());
	}

在某些情况下格式化会出错.
e.g.  CmsController 格式化 出来是  cmscontroller

附上自己写的一段代码....自我觉得可用,但是不保证是最优,处女座的可以略过

	/**
	 * 首字母大写
	 * @param realName
	 * @return	非null,则表示已经转换完成
	 * <br />
	 * date & time: 2015-4-4 / 下午11:43:19 <br />
	 * author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
	 */
	public static String firstUpperCase(String realName) {

		Boolean flag = StringUtil.isUpperOrLowerCase(realName.charAt(0));
		if (flag != null && !flag) {//是字母,而且是小写字母
			char[] cs = realName.toCharArray();
			StringBuffer stringBuffer = new StringBuffer();
			int i = 0;
			for (char c : cs) {
				if (i++ == 0) {
					char temp = (char) (c - 32);
					stringBuffer.append(String.valueOf(temp));
				}else {
					stringBuffer.append(String.valueOf(c));
				}
			}

			return stringBuffer.toString();

		}else if(flag != null && flag){//是字母,而且也是大写字母
			return realName;
		}else {
			return null;
		}
	}

	/**
	 * 首字母小写
	 * @param realName
	 * @return	非null,则表示已经转换完成
	 * <br />
	 * date & time: 2015-4-4 / 下午11:44:36 <br />
	 * author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
	 */
	public static String firstLowerCase(String realName) {
		Boolean flag = StringUtil.isUpperOrLowerCase(realName.charAt(0));
		if (flag != null && flag) {//是字母,而且是大写字母
			char[] cs = realName.toCharArray();
			StringBuffer stringBuffer = new StringBuffer();
			int i = 0;
			for (char c : cs) {
				if (i++ == 0) {
					char temp = (char) (c + 32);
					stringBuffer.append(String.valueOf(temp));
				}else {
					stringBuffer.append(String.valueOf(c));
				}
			}

			return stringBuffer.toString();

		}else if(flag != null && !flag){//是字母,而且也是小写字母
			return realName;
		}else {
			return null;
		}
	}

	/**
	 * 是大写还是小写字母
	 * @param c	字符
	 * @return <br />
	 * <ol>
	 * 	<li>true: 大写</li>
	 * 	<li>false: 小写 </li>
	 * 	<li>null: 不是字母</li>
	 * </ol>
	 * <br />
	 * date & time: 2015-4-4 / 下午11:27:24 <br />
	 * author: <a href="http://chris-rock-f0.iteye.com/">chris</a>
	 */
	public static Boolean isUpperOrLowerCase(char c){

		int cint = c - 0;

		if (cint <= 90 && cint >= 65) {//大写字母
			return true;
		}else if (cint <= 122 && cint >= 97) {//小写字母
			return false;
		}else {
			return null;
		}
	}
分享到:
评论

相关推荐

    StringUtil.java

    java编程中对字符串的各种方式的处理,包括(空字符串处理、判断是否是空字符串 null和"" 都返回 true、 把string array or list用给定的符号symbol连接成一个字符串、 判定第一个字符串是否等于的第二个字符串中的某...

    StringUtil.rar

    首先,`StringUtil.cpp`和`StringUtil.h`是C++中的源代码文件和头文件,它们定义了类`StringUtil`及其成员函数。在C++中,头文件通常用于声明类、函数、常量等,而源代码文件则包含了这些声明的实现细节。在这个案例...

    C语言实现String字符串及其函数stringUtil

    - `str_compare()`:比较两个字符串,类似`strcmp()`,但可能提供了更多的比较选项,如忽略大小写或只比较部分字符串。 - `str_substring()`:获取字符串的一个子串。 - `str_length()`:计算字符串长度,类似`...

    StringUtil(通过的字符处理工具类)

    `StringUtil`是一个常见的Java工具类,它包含了大量用于处理字符串的方法,可以极大地简化字符串操作,提高代码的可读性和效率。在Java开发中,我们经常会遇到对字符串进行各种操作的需求,如检查空值、分割、连接、...

    StringUtil.java工具类

    StringUtil工具类java学习的好东西!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...

    StringUtil

    String util操作类,个人整理,欢迎补充

    AS3-StringUtil

    `toLowercase`和`toUppercase`方法可以方便地进行大小写的转换,而在`StringUtil`中,它们可能会有更高效的实现。 7. **检查与验证**: 类中还可能包含一些检查方法,如`isEmpty`检查字符串是否为空,`...

    StringUtil_StringUtil_

    在.NET编程环境中,`StringUtil`通常是指一个自定义的实用工具类,用于处理字符串的各种操作。这个类可能包含了丰富的静态方法,旨在简化和优化对字符串的处理,因为.NET框架的标准库`System.String`虽然功能强大,...

    StringUtil工具类

    StringUtil工具类 是对String 对象封装操作

Global site tag (gtag.js) - Google Analytics