Java-切换字符串中的字母大小写

Java-toggle alphabet case in string

我有代码可以将大小写从大写切换到小写,反之亦然。我也有它,它会切换从上到下,从下到上。我的问题是;有没有办法让它也包括逗号或句号等字符。例如,如果我输入字符串 "Hello, there.",我将得到:"HELLO, THERE."、"hello, there" 和 "hELLOTHERE"。我怎样才能把它送到我的第三个输出会说 "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; 

   }

}

使用 Apache 通用语言 API StringUtils class。 UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize - 改变字符串的大小写

要切换大小写,请使用

swapCase(String str)

Swaps the case of a String changing upper and title case to lower case, and lower case to upper case.

此外,您无需编写任何代码来处理 ' 或 .或任何其他此类 characters.String Util 将完成所有工作..

示例:

        String inputString = "Hello, there";
        
        System.out.println(StringUtils.swapCase(inputString));
        System.out.println(StringUtils.upperCase(inputString));
        System.out.println(StringUtils.lowerCase(inputString));

输出:
你好,那里
你好,那里
你好

如果一个字符既不是大写也不是小写,你应该照原样使用。另外,不要使用 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();
}

编辑:
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());
}

鉴于您发布的源代码,您现在有一个包含两个分支的 if 语句:一个用于字符为大写的情况,一个用于字符为小写的情况。逗号和其他标点符号等字符没有大写或小写,因此它们会被您的 if 语句和 else 块忽略。

要解决这个问题,请在语句中添加另一个 else 块:

else {
    toggled = toggled + letter; 
}

完成该工作后,您应该考虑使代码更清晰。

您现在在代码中出现了三次语句 toggled = toggled + letter;;你可以把它改成一次:

       char letter = sentence.charAt(i); 

       if(Character.isUpperCase(sentence.charAt(i)))
       {
            letter = Character.toLowerCase(letter); 
       }
       else if(Character.isLowerCase(sentence.charAt(i)))
       {
           letter = Character.toUpperCase(letter);
       }
       // else {
       // }
       // You can remove the latest `else` branch now, because it is empty.

       toggled = toggled + letter; 

此外,在 Java 中构建字符串的首选方法是在字符串上使用 StringBuilder 而不是 + 运算符。如果您在 Whosebug 上搜索 StringBuilder,您将获得大量关于如何使用它的示例。

我们可以简单地将传入的String转换为char[],然后分别切换它们。对我有用!!!

import java.util.Scanner;
@SuppressWarnings("unused")
public class One {
public static void main(String[] args) {
System.out.println("Enter a Word with toggled alphabets");  
Scanner sc=new Scanner(System.in);

String line =sc.nextLine();
char[] arr= line.toCharArray();

for(char ch: arr)
  {
if(Character.isUpperCase(ch)){
ch= Character.toLowerCase(ch);
}
else if(Character.isLowerCase(ch)){
    ch= Character.toUpperCase(ch);
}
System.out.print(ch);
}}} 

Java8:

一行代码即可

String newText = text.chars() .mapToObj(ch -> Character.isLowerCase(ch) ? String.valueOf(Character.toUpperCase((char)ch)) : String.valueOf(Character.toLowerCase((char)ch))) .collect(Collectors.joining());

我们可以通过将字符串的所有字符与所有大写字母和小写字母进行比较来做到这一点。如果字符与大写字母匹配,则将其替换为相应的小写字母,反之亦然。

import java.util.Scanner;
class TestClass {
    public static void main(String args[] ) throws Exception {
        Scanner scan = new Scanner(System.in);
        String S = scan.next();
        char []a ={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
        char []b ={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        char [] ch = S.toCharArray();
        for(int i=0;i<ch.length;i++){
           for(int j=0;j<a.length;j++){
               if(ch[i]==a[j]){
                   ch[i]=b[j];
               }
               else if(ch[i]==b[j]){
                   ch[i]=a[j];
               }
           }
        }
        String text = new String(ch);
        System.out.println(text);
    }
}

使用位操作:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner scan= new Scanner(System.in);
        String s= scan.next();
        for(int i=0;i<s.length();i++){
            System.out.print((char)(s.charAt(i)^32));
        }
    }
}