You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java字符串大小写反转问题:为何无法实现单个字符转相反大小写?

字符串大小写反转问题分析与解决

问题描述

需求是将字符串的每个字符转换为相反大小写(例如输入LowerUpperCase,期望输出lOWERuPPERcASE),但以下Java代码运行后,始终得到全小写或全大写的结果,无法实现单个字符的大小写转换:

public class LowerUpperCase {
    
    public static void main(String[] args) {
        String s="lowerUppercase";
       
       
        for (int i = 0; i < s.length()-1; i++) {

            if(s.charAt(i) >='a' && s.charAt(i)<='z'){  //OR IF DONE THIS NOT WORKING
                // if((s.charAt(i) >='a' && s.charAt(i)<='z' ) || (s.charAt(i) >='A' && s.charAt(i)<='Z')){

                s=s.toLowerCase();//here should i go for 

            }
            else if(s.charAt(i) >='A' && s.charAt(i)<='Z'){
                
                s=s.toUpperCase();

           }
           
            
        }
        System.out.println(s);
    }
}

问题原因

  1. String不可变性:Java里String是不可变对象,调用s.toLowerCase()或s.toUpperCase()会直接返回一个全新的全小写/全大写字符串,根本不会修改原字符串的单个字符。
  2. 循环逻辑错误:循环里每次判断单个字符后,都会把整个字符串转成全大/小写,最终只会保留最后一次循环的转换结果,自然做不到逐个字符反转。

解决方案

要逐个处理每个字符,用StringBuilder(可变字符序列)来拼接转换后的字符,既避免频繁创建新String对象,又能实现单个字符的大小写反转:

正确实现代码

public class LowerUpperCase {
    public static void main(String[] args) {
        String s = "lowerUppercase";
        StringBuilder result = new StringBuilder();
        
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            // 小写字母转大写
            if (Character.isLowerCase(c)) {
                result.append(Character.toUpperCase(c));
            } 
            // 大写字母转小写
            else if (Character.isUpperCase(c)) {
                result.append(Character.toLowerCase(c));
            } 
            // 非字母字符直接保留
            else {
                result.append(c);
            }
        }
        
        System.out.println(result.toString());
    }
}

代码说明

  • 用Character.isLowerCase()和Character.isUpperCase()判断字符大小写,比直接比较ASCII码更严谨,能支持Unicode字符。
  • 单个字符转换用Character.toUpperCase()/Character.toLowerCase(),只处理当前字符,不会影响整个字符串。
  • StringBuilder高效拼接结果,避免多次创建String对象带来的性能损耗。

内容的提问来源于stack exchange,提问作者raghava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:40:57