Strings

Padawan

Erfahrenes Mitglied
Guten abend alle zusammen,

ich hab mir (versucht) ein code zusammen zu geschrieben, der in einem String alle klein buchstaben in Großbuchstaben und alle Großbuchstaben in Kleinbuchstaben schreiben soll.

Das Problem ist, die Zeile 4. Da die Methode toUpperCase nur für strings gilt. Weiss jemand vielleicht wie mans machn könnte?

Java:
String tmp = "sAAdeelfDertfTbsZrn";
for(int i =0; i> tmp.length(); i++){
    if(tmp.charAt(i) >= 'a' || tmp.charAt(i) >= 'z'){
        tmp.toUpperCase(tmp.charAt(i));
     }
}

lösung müsste dann sein: tmp --> SaaDEELFdERTFtBSzRN

Viele Grüße
Padawan
 
Zuletzt bearbeitet:
Mit String.valueOf(char) kann man aus einem Char wider ein String machen
oder Character.toString

allerdings währe mein Lösungsansatz so:

Code:
String swapUpperLower(String in) {
  char[] arr = in.toCharArray();
  for (int lo=0;lo<in.length;lo++) {
   if (Character.isLetter(arr[lo])) {
    arr[lo] = char ((int) arr[lo] ^ 32);
   }
  }
  return String.valueOf(arr);
}

Ungetestet !!
Mache aus String ein Char Array;
mache mit jedem Zeichen ein XOR mit dem wert (hex) 20
(da acsii a= (hex) 61 und acsii A= (hex) 41 reicht es wenn ich das entsprechende Bit umdrehe)
dann aus dem Char Array wider ein String

nur ne Idee :)
 
Zuletzt bearbeitet:
Zur entschuldigung ich hatte noch kein Kaffee :)
aber stimmt man muss 20(hex) = 32 (dezimal) drehen

Nachtrag:
da ACSII (hex)20 das leerzeichen ist sollte auch das gehen:
Code:
arr[lo] = arr[lo] ^ ' ';
 
Zuletzt bearbeitet:
Ohne Bytemanipulationen ist es zwar langsamer und langweiliger, dafür einfach nachzuvollziehen:

Java:
	public static String swapUpperLower(String in) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < in.length(); i++) {
			String charAt = in.substring(i, i + 1);
			if (!charAt.equals(charAt.toUpperCase())) {
				sb.append(charAt.toUpperCase());
			} else {
				sb.append(charAt.toLowerCase());
			}
		}
		return sb.toString();
	}
 

Neue Beiträge

Zurück