将字符串中的 java 字符转换为 lowerCase/upperCase
Convert java char inside string to lowerCase/upperCase
我有一个名为 "originalstring" 的字符串,其中包含一个大小写字符混合的句子。
我只是想翻转字符串,如果一个字符是小写,则将其变为大写,反之亦然,return。
我试过这段代码,return是大写的原始字符串:
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
originalString += Character.toLowerCase(c);
}
if (Character.isLowerCase(c)) {
originalString += Character.toUpperCase(c);
}
}
return originalString;
您正在向原始字符串中添加字符。此外,这意味着您的 for
循环永远不会到达 for
循环迭代的末尾,因为 originalString.length()
也会更改每个循环。这是一个无限循环。
相反,创建一个 StringBuilder
来存储您在原始字符串上迭代时转换后的字符。最后将其转换为 String
和 return。
StringBuilder buf = new StringBuilder(originalString.length());
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
buf.append(Character.toLowerCase(c));
}
else if (Character.isLowerCase(c)) {
buf.append(Character.toUpperCase(c));
}
// Account for case: neither upper nor lower
else {
buf.append(c);
}
}
return buf.toString();
Common-lang 提供 swapCase
功能,请参阅 the doc。文档示例:
StringUtils.swapCase(null) = null
StringUtils.swapCase("") = ""
StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
如果你真的想自己动手,可以查看common-lang StringUtils
的出处
您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:
转为大写:
char upperChar = (char) (c & 0x5f)
小写:
char lowerChar = (char) (c ^ 0x20)
在你的程序中:
StringBuilder result = new StringBuilder(originalString.length());
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
result.append((char) (c ^ 0x20));
}
else if ((c >= 'a') && (c <= 'z')) {
result.append((char) (c & 0x5f));
}
else {
result.append(c);
}
}
System.out.println(result);
我有一个名为 "originalstring" 的字符串,其中包含一个大小写字符混合的句子。
我只是想翻转字符串,如果一个字符是小写,则将其变为大写,反之亦然,return。
我试过这段代码,return是大写的原始字符串:
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
originalString += Character.toLowerCase(c);
}
if (Character.isLowerCase(c)) {
originalString += Character.toUpperCase(c);
}
}
return originalString;
您正在向原始字符串中添加字符。此外,这意味着您的 for
循环永远不会到达 for
循环迭代的末尾,因为 originalString.length()
也会更改每个循环。这是一个无限循环。
相反,创建一个 StringBuilder
来存储您在原始字符串上迭代时转换后的字符。最后将其转换为 String
和 return。
StringBuilder buf = new StringBuilder(originalString.length());
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
buf.append(Character.toLowerCase(c));
}
else if (Character.isLowerCase(c)) {
buf.append(Character.toUpperCase(c));
}
// Account for case: neither upper nor lower
else {
buf.append(c);
}
}
return buf.toString();
Common-lang 提供 swapCase
功能,请参阅 the doc。文档示例:
StringUtils.swapCase(null) = null
StringUtils.swapCase("") = ""
StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
如果你真的想自己动手,可以查看common-lang StringUtils
您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:
转为大写:
char upperChar = (char) (c & 0x5f)
小写:
char lowerChar = (char) (c ^ 0x20)
在你的程序中:
StringBuilder result = new StringBuilder(originalString.length());
for (int i = 0; i < originalString.length(); i++) {
char c = originalString.charAt(i);
if (Character.isUpperCase(c)) {
result.append((char) (c ^ 0x20));
}
else if ((c >= 'a') && (c <= 'z')) {
result.append((char) (c & 0x5f));
}
else {
result.append(c);
}
}
System.out.println(result);