字符串中的Java-toggle字母表案例

eca*_*ain 2 java string toupper tolower

我有我的代码将案例从上部切换到下部,反之亦然.我也可以将它从上到下切换,从下到上.我的问题是; 有没有办法可以让它包括逗号或句号等字符.例如,如果我输入字符串"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; 

   }
Run Code Online (Sandbox Code Playgroud)

}

Mur*_*nik 8

如果一个字符既不是大写字母也不是小写字母,那么你应该按原样使用它.此外,不要使用a String来累积你的输出 - 这是StringBuilder用于:

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();
}
Run Code Online (Sandbox Code Playgroud)

编辑:
Java 8语义中的类似实现,无需自己循环遍历字符串:

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());
}
Run Code Online (Sandbox Code Playgroud)