java中把一个字符串中大写字母转换为小写,小写字母转换为大写

简介: java中把一个字符串中大写字母转换为小写,小写字母转换为大写观看提示:这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不能改变了;如果需要改变,那么应该使用StringBuffer,这个例子也...

java中把一个字符串中大写字母转换为小写,小写字母转换为大写

观看提示:

这里提供2中思维,但是第一种是正确的,第二种是错误的;第二种的思维可以了解了解,但是需要注意的是如果某个字符串定义为String类型,那么这个串就不能改变了;如果需要改变,那么应该使用StringBuffer,这个例子也能够很好的说明StringBuffer和String之间的区别!

下面的代码中exChange()能够得到正确的结论,exChange2()不能得到正确的结论,原因就是上面说的:如果某个字符串定义为String类型,那么这个串就不能改变了

	//把一个字符串中的大写转为小写,小写转换为大写:思路1
	public static String exChange(String str){
		StringBuffer sb = new StringBuffer();
		if(str!=null){
			for(int i=0;i<str.length();i++){
				char c = str.charAt(i);
				if(Character.isUpperCase(c)){
					sb.append(Character.toLowerCase(c));
				}else if(Character.isLowerCase(c)){
					sb.append(Character.toUpperCase(c)); 
				}
			}
		}
		
		return sb.toString();
	}
	
	//把一个字符串中的大写转为小写,小写转换为大写:思路2
	public static String exChange2(String str){
		for(int i=0;i<str.length();i++){
			//如果是小写
			if(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase())){
				str.substring(i, i+1).toUpperCase();
			}else{
				str.substring(i, i+1).toLowerCase();
			}
		}
		return str;
	}

【温馨提示】.

Apache的commons-lang包中有很多我们常用的方法.比如IO操作的中的拷贝整个目录,判断一个字符是不是符合Email的格式,判断一个字符是不是数字型.....

所以千万别什么都自己写.尽量看看在其中是不是已经有现成的方法了.
比如上面这个问题,.就可以这么写【项目中需要有commons-lang这个包,可以去http://commons.apache.org/proper/commons-lang/download_lang.cgi下载】
String str = "aBcD";

System.out.println(StringUtils.swapCase(str));

我看了源码:StringUtils.swapCase(str)这个方法的实现其实跟第一种差不多!下面是apache官方的swapCase这个方法

    /**
     * <p>Swaps the case of a String changing upper and title case to
     * lower case, and lower case to upper case.</p>
     *
     * <ul>
     *  <li>Upper case character converts to Lower case</li>
     *  <li>Title case character converts to Lower case</li>
     *  <li>Lower case character converts to Upper case</li>
     * </ul>
     *
     * <p>For a word based algorithm, see {@link org.apache.commons.lang3.text.WordUtils#swapCase(String)}.
     * A {@code null} input String returns {@code null}.</p>
     *
     * <pre>
     * StringUtils.swapCase(null)                 = null
     * StringUtils.swapCase("")                   = ""
     * StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
     * </pre>
     *
     * <p>NOTE: This method changed in Lang version 2.0.
     * It no longer performs a word based algorithm.
     * If you only use ASCII, you will notice no change.
     * That functionality is available in org.apache.commons.lang3.text.WordUtils.</p>
     *
     * @param str  the String to swap case, may be null
     * @return the changed String, {@code null} if null String input
     */
    public static String swapCase(String str) {
        if (StringUtils.isEmpty(str)) {
            return str;
        }

        char[] buffer = str.toCharArray();

        for (int i = 0; i < buffer.length; i++) {
            char ch = buffer[i];
            if (Character.isUpperCase(ch)) {
                buffer[i] = Character.toLowerCase(ch);
            } else if (Character.isTitleCase(ch)) {
                buffer[i] = Character.toLowerCase(ch);
            } else if (Character.isLowerCase(ch)) {
                buffer[i] = Character.toUpperCase(ch);
            }
        }
        return new String(buffer);
    }

目录
相关文章
|
SQL JSON Java
告别字符串拼接:用Java文本块优雅处理多行字符串
告别字符串拼接:用Java文本块优雅处理多行字符串
705 108
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
637 14
|
SQL JSON Java
告别拼接噩梦:Java文本块让多行字符串更优雅
告别拼接噩梦:Java文本块让多行字符串更优雅
1128 82
|
存储 缓存 安全
Java字符串缓冲区
字符串缓冲区是用于处理可变字符串的容器,Java中提供了`StringBuffer`和`StringBuilder`两种实现。由于`String`类不可变,当需要频繁修改字符串时,使用缓冲区更高效。`StringBuffer`是一个线程安全的容器,支持动态扩展、任意类型数据转为字符串存储,并提供多种操作方法(如`append`、`insert`、`delete`等)。通过这些方法,可以方便地对字符串进行添加、插入、删除等操作,最终将结果转换为字符串。示例代码展示了如何创建缓冲区对象并调用相关方法完成字符串操作。
457 13
|
存储 缓存 安全
Java 字符串详解
本文介绍了 Java 中的三种字符串类型:String、StringBuffer 和 StringBuilder,详细讲解了它们的区别与使用场景。String 是不可变的字符串常量,线程安全但操作效率较低;StringBuffer 是可变的字符串缓冲区,线程安全但性能稍逊;StringBuilder 同样是可变的字符串缓冲区,但非线程安全,性能更高。文章还列举了三者的常用方法,并总结了它们在不同环境下的适用情况及执行速度对比。
652 17
|
JSON 前端开发 Java
【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
类中成员变量命名问题引起传送json字符串,但是变量为null的情况做出解释,@Data注解(Spring自动生成的get和set方法)和@JsonProperty
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
522 83
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
466 26
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
627 8