java - 如何反转字符串中特定字母字符的大写(不区分大小写),使字符串中的所有其他字符不受影响?
问题描述
我正在尝试实现一个搜索给定字符串并反转所有出现的特定字母字符(不区分大小写)的大写的函数,使数字、特殊字符和其他字母字符不受影响。
例如,如果 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();
}
我应该怎么办?任何帮助将不胜感激。
解决方案
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();
}
推荐阅读
- full-text-search - 嗖嗖声接近搜索
- apache - 在单独的服务器上托管特定的站点路径
- c++ - C++ 无法正确读取文件
- unix - Unix 在 6T 磁盘上查找需要 14 小时:csh
- python - 如何在 pandas python 的数据框中插入行?
- pip - 机器人框架 pip 安装到不同的目录
- java - 我如何编写基于用户输入的构造函数?
- sql - SQL 左连接 - 在较小的表上变慢?
- reactjs - 通过 this.props 访问 Redux State 会抛出“Cannot read property name of undefined”。
- c++ - 从行读取时清除 Ifstream 文件