字符串中的Java切换字母大小写 [英] Java-toggle alphabet case in string
问题描述
我有我的代码,可以将大小写从大写小写切换到小写,反之亦然.我也有将它切换到上到下,从下到上的位置.我的问题是;有没有办法让我也包含逗号或点号之类的字符.例如,如果我输入字符串"Hello,there".我会得到:你好,那里.",你好,那里"和"hELLOTHERE".如何将其输出到我的第三个输出将显示"helloo,there"的位置.
I have my code to switch the case from upper to lower and vice versa. I also have it to where it will toggle upper to lower, and lower to upper. My question is; is there a way I can get it to also include the character such as a comma or a period. For example, if I type in the string "Hello, there." I will get: "HELLO, THERE.", "hello, there" and "hELLOTHERE". How can I get it to where my third output will say "hELLO, THERE."
import java.util.*;
public class UpperLower2
{
public static void main(String[] args)
{
System.out.println("Enter in a sentence:");
Scanner input = new Scanner(System.in);
String sentence = input.nextLine();
System.out.println("All uppercase:" + sentence.toUpperCase());
System.out.println("All lowercase:" + sentence.toLowerCase());
System.out.println("Converted String:" + toggleString(sentence));
input.close();
}
public static String toggleString(String sentence)
{
String toggled = "";
for(int i=0; i<sentence.length(); i++)
{
char letter = sentence.charAt(i);
if(Character.isUpperCase(sentence.charAt(i)))
{
letter = Character.toLowerCase(letter);
toggled = toggled + letter;
}
else if(Character.isLowerCase(sentence.charAt(i)))
{
letter = Character.toUpperCase(letter);
toggled = toggled + letter;
}
}
return toggled;
}
}
推荐答案
如果字符既不是大写也不是小写,则应按原样使用它.另外,请勿使用 String
累积输出-这就是 StringBuilder
的用途:
If a character is neither upper case nor lowercase, you should just take it as is. Also, don't use a String
to accumulate your output - this is what StringBuilder
s are for:
public static String toggleString(String sentence) {
StringBuilder toggled = new StringBuilder(sentence.length());
for (char letter : sentence.toCharArray()) {
if(Character.isUpperCase(letter)) {
letter = Character.toLowerCase(letter);
} else if(Character.isLowerCase(letter)) {
letter = Character.toUpperCase(letter);
}
toggled.append(letter);
}
return toggled.toString();
}
Java 8语义中的类似实现,而无需自己遍历字符串:
A similar implementation in Java 8 semantics, without having to loop over the string yourself:
public static String toggleStringJava8(String sentence) {
return sentence.chars().mapToObj(c -> {
if (Character.isUpperCase(c)) {
c = Character.toLowerCase(c);
} else if (Character.isLowerCase(c)) {
c = Character.toUpperCase(c);
}
return String.valueOf((char)c);
}).collect(Collectors.joining());
}
这篇关于字符串中的Java切换字母大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!