web-dev-qa-db-fra.com

comment convertir les lettres minuscules en majuscules et les majuscules en minuscules

Afficher alternativement tout texte tapé dans la zone de texte 

//     in either Capital or lowercase depending on the original
//     letter changed.  For example:  CoMpUtEr will convert to
//     cOmPuTeR and vice versa.
    Switch.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e )

            String characters = (SecondTextField.getText()); //String to read the user input
            int length = characters.length();  //change the string characters to length

         for(int i = 0; i < length; i++)  //to check the characters of string..
         {             
            char character = characters.charAt(i);          

            if(Character.isUpperCase(character)) 
            {
                SecondTextField.setText("" + characters.toLowerCase());

            }
            else  if(Character.isLowerCase(character))
            {
                 SecondTextField.setText("" + characters.toUpperCase()); //problem is here, how can i track the character which i already change above, means lowerCase**
                }               
         }}     
    });
9
akki0996

setText modifie le contenu du texte pour qu'il corresponde exactement à ce que vous lui donnez, sans l'ajouter.

Convertissez d'abord la String du champ, puis appliquez-la directement ...

String value = "This Is A Test";
StringBuilder sb = new StringBuilder(value);
for (int index = 0; index < sb.length(); index++) {
    char c = sb.charAt(index);
    if (Character.isLowerCase(c)) {
        sb.setCharAt(index, Character.toUpperCase(c));
    } else {
        sb.setCharAt(index, Character.toLowerCase(c));
    }
}

SecondTextField.setText(sb.toString());
16
MadProgrammer

Vous n'avez pas besoin de savoir si vous avez déjà changé le personnage de haut en bas. Votre code est déjà en train de le faire puisqu'il s'agit en gros:

1   for each character x:
2       if x is uppercase:
3           convert x to lowercase
4       else:
5           if x is lowercase:
6                convert x to uppercase.

Le fait que vous ayez cette else dans (ligne 4) signifie qu’un caractère initialement en majuscule ne sera jamais vérifié dans la deuxième instruction if (à la ligne 5).

Exemple, commencez par A. Parce que c'est en majuscule, il sera converti en minuscule en ligne 3, puis vous remonterez à la ligne 1 pour le caractère suivant .

Si vous commencez par z, la if de la ligne 2 vous enverra directement à la ligne 5 où elle sera convertie en majuscule. Tout ce qui n’est ni majuscule ni minuscule échouera les deux if et restera donc inchangé.

5
paxdiablo

C'est une meilleure méthode: -

void main()throws IOException
{
    System.out.println("Enter sentence");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str = br.readLine();
    String sentence = "";
    for(int i=0;i<str.length();i++)
    {
        if(Character.isUpperCase(str.charAt(i))==true)
        {
            char ch2= (char)(str.charAt(i)+32);
            sentence = sentence + ch2;
        }
        else if(Character.isLowerCase(str.charAt(i))==true)
        {
            char ch2= (char)(str.charAt(i)-32);
            sentence = sentence + ch2;
        }
        else
        sentence= sentence + str.charAt(i);

    }
    System.out.println(sentence);
}
4
Shubham

Vous pouvez utiliser StringUtils.swapCase() à partir de org.Apache.commons

4
Pshemo

Le problème est que vous essayez de définir la valeur SecondTextField après avoir vérifié chaque caractère de la chaîne d'origine. Vous devez effectuer la conversion "sur le côté", un caractère à la fois, puis définir le résultat dans la variable SecondTextField.

Au fur et à mesure que vous parcourez la chaîne d'origine, commencez à composer le résultat à partir d'une chaîne vide. Continuez à ajouter le caractère dans le cas contraire jusqu'à ce que vous manquiez de caractères. Une fois que la sortie est prête, définissez-la dans SecondTextField.

Vous pouvez créer une sortie String, lui attribuer une chaîne vide "" et lui ajouter des caractères au fur et à mesure. Cela fonctionnera, mais c’est une approche inefficace. Une meilleure approche serait d’utiliser une classe StringBuilder class, qui vous permet de changer la chaîne sans tout jeter.

3
dasblinkenlight
String name = "Vikash";
String upperCase = name.toUpperCase();
String lowerCase = name.toLowerCase();
2
rocks

C'est une meilleure approche sans utiliser aucune fonction de chaîne.

public static String ReverseCases(String str) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < str.length(); i++) {
      char temp;
      if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z') {
        temp = (char)(str.charAt(i) - 32);
      }
      else if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z'){
        temp = (char)(str.charAt(i) + 32);
      }
      else {
        temp = str.charAt(i);
      }

      sb.append(temp);
    }
    return sb.toString();
  }
2
Amarjit Datta

Voici une autre version:

classe publique Palindrom {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter a Word to check: ");
    String checkWord = sc.nextLine();
    System.out.println(isPalindrome(checkWord));
    sc.close();

}

public static boolean isPalindrome(String str) {        
    StringBuilder secondSB = new StringBuilder();
    StringBuilder sb = new StringBuilder();
    sb.append(str);
    for(int i = 0; i<sb.length();i++){
        char c = sb.charAt(i);
        if(Character.isUpperCase(c)){
            sb.setCharAt(i, Character.toLowerCase(c));
        }
    }
    secondSB.append(sb);
    return sb.toString().equals(secondSB.reverse().toString());
}

}

1
Tano
public class Toggle {
public static String toggle(String s) {
    char[] ch = s.toCharArray();

    for (int i = 0; i < s.length(); i++) {
        char charat = ch[i];
        if (Character.isUpperCase(charat)) {
            charat = Character.toLowerCase(charat);
        } else
            charat = Character.toUpperCase(charat);
        System.out.print(charat);
    }
    return s;
  }

public static void main(String[] args) {
    toggle("DivYa");
   }
  }
0
Divya
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String satr=scanner.nextLine();
    String newString = "";
    for (int i = 0; i < satr.length(); i++) {
        if (Character.isUpperCase(satr.charAt(i))) {
            newString+=Character.toLowerCase(satr.charAt(i));
        }else newString += Character.toUpperCase(satr.charAt(i));
    }
    System.out.println(newString);
}
0
Umarjon
//This is to convert a letter from upper case to lower case
import Java.util.Scanner;
    public class ChangeCase {
        public static void main(String[]args) {

            String input;
            Scanner sc= new Scanner(System.in);
                System.out.println("Enter Letter from upper case");
                input=sc.next();

            String result;
            result= input.toLowerCase();
            System.out.println(result);
        }
    }
0
Janeth Fernando
StringBuilder b = new StringBuilder();

Scanner s = new Scanner(System.in);
String n = s.nextLine();

for(int i = 0; i < n.length(); i++) {
    char c = n.charAt(i);

    if(Character.isLowerCase(c) == true) {
        b.append(String.valueOf(c).toUpperCase());
    }
    else {
        b.append(String.valueOf(c).toLowerCase());
    }
}

System.out.println(b);
0
Ebin Thomas
import Java.util.Scanner;
class TestClass {
    public static void main(String args[]) throws Exception {
        Scanner s = new Scanner(System.in);
        String str = s.nextLine();
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if (Character.isUpperCase(ch[i])) {
                ch[i] = Character.toLowerCase(ch[i]);
            } else {
                ch[i] = Character.toUpperCase(ch[i]);
            }
        }
        System.out.println(ch);
    }
}
0
Aditya Parmar