首页 > 解决方案 > 如何反转字符串中特定字母字符的大写(不区分大小写),使字符串中的所有其他字符不受影响?

问题描述

我正在尝试实现一个搜索给定字符串并反转所有出现的特定字母字符(不区分大小写)的大写的函数,使数字、特殊字符和其他字母字符不受影响。

例如,如果 theString = "abc123XYZ" 和 reverseCaps = "cyz",则结果应为 "abC123Xyz"。

我尝试了各种实现和修复,但无法使其正常工作。我现在得到的结果是“ABC123xyz”。

这是我的代码:

public static String flipCaseChars(String theString, String reverseCap) {

    StringBuilder buf = new StringBuilder(theString.length());

    for (int i = 0; i < theString.length(); i++) {

        char c = theString.charAt(i);

        if (Character.isUpperCase(c)) {
            buf.append(Character.toLowerCase(c));
        }

        else if (Character.isLowerCase(c)) {
            buf.append(Character.toUpperCase(c));
        }

        // if char is neither upper nor lower
        else {
            buf.append(c);
        }
    }
    return buf.toString();
}

我应该怎么办?任何帮助将不胜感激。

标签: javastringalgorithm

解决方案


public static String flipCaseChars(String theString, String reverseCap) {

    StringBuilder buf = new StringBuilder(theString.length());

    for (int i = 0; i < theString.length(); i++) {
        char c = theString.charAt(i);
        if (reverseCap.indexOf(c) >= 0){
            if (Character.isUpperCase(c)) {
                buf.append(Character.toLowerCase(c));
            }   else if (Character.isLowerCase(c)) {
                buf.append(Character.toUpperCase(c));
            } else { 
                buf.append(c);
            }
        } else {
            buf.append(c);
        }
    }
    return buf.toString();
}

推荐阅读