# bestimmte Buchstaben in einem String ändern



## clwoe (12. Nov 2007)

ich habe folgendes Problem.

Ich soll alle Buchstaben die groß geschrieben sind in einem String ändern. ich übergebe den String einer Methode, die den abgeänderten String zurückgeben soll. Ich weiß aber nicht wie ich die geänderten Buchstaben wieder in den String einfüge. 
Die Änderung der entsprechenden Strings wandle ich in den entsprechenden Integer Wert derAscii Tabelle um und verschiebe ihn entsprechend. Doch wie  kriege ich nun den geänderten char wieder an die richtige Stelle in meinen String. Ich soll keine vorgefertigten Methoden nehmen sondern  soll die chars einzeln mit charAt(i) aus dem String extrahieren, sie dann ändern und den geänderten String wieder ausgeben.

Hier ist mein  Programm, allerdings ist der Offset nicht zu beachten. Es geht mir erstmal nur darum was ich oben geschrieben habe.
Der code ist natürlich keineswegs vollständig bis jetzt, das ist mir klar. Nur wie schaffe ich es, den String  entsprechend abzuändern und ihn dann geändert wieder auszugeben.
Ich muss den Mist morgen abgeben und habe keine Ahnung.

```
public class Caesar
{
	public static String encrypt(String str, int offset)
	{
		int k = str.length();
		for (int i = 0; i < (k-1); i++)
		{
			char c = str.charAt(i);
			int a = (int) c;
			if ((a < 65) || ((a > 90) && (a < 97)) || (a > 122))
			{
				return "Falsche Buchstaben!";
			}
			else if ((a <= 90) && (a >= 65))
				{
					char b = (char) (a + 32);
					String text = 
					return str;
				}
		}
	}

	public static void main(String args[])
	{
		String x = new String(args[0]);
		int offset = Integer.parseInt(args[0]);
		System.out.print("Bitte geben sie den zu verschluesselnden Satz ein: ");
		String wort = GdAInput.readLine();
		System.out.println("Eingabe:\n " + wort);
		System.out.println("Uebergebener Schluessel: " + offset);
		String textneu = encrypt(wort, offset);
		System.out.println("Neuer Text: " + textneu);
	}
}
```


----------



## André Uhres (12. Nov 2007)

Vor der Schleife leeren String erzeugen. In der Schleife mit += erweitern.
Nach der Schleife String zurückgeben.


----------



## Der Müde Joe (12. Nov 2007)

Was soll mit den grossen Buchstaben passieren?

alle klein?

EDIT:
wenn ja:
return myString.toLowerCase();


----------



## clwoe (12. Nov 2007)

André Uhres hat gesagt.:
			
		

> Vor der Schleife leeren String erzeugen. In der Schleife mit += erweitern.
> Nach der Schleife String zurückgeben.



Das verstehe ich nicht ganz. Könntest du etwas präziser werden, bitte.

@der müde Joe

ich darf eigentlich keine vorgefertigten Methoden verwenden. Dann wäre es ja zu einfach.

Wenn ich es allerdings nicht anders hinbekomme, dann benutze ich das, bevor  ich gar nichts habe.


----------



## Der Müde Joe (12. Nov 2007)

```
public static String toLowerCase(String s){
		StringBuilder sb = new StringBuilder();
		for (char c : s.toCharArray()){
			if ( c >= 65 && c <= 90){
				sb.append(((char)(c+32)));
			} else{
				sb.append(c);
			}
		}
		return sb.toString();	
	}
```

EDIT:
oder nach André:

```
public static String toLowerCase(String s){
		String sb = "";
		for (char c : s.toCharArray()){
			if ( c >= 65 && c <= 90){
				sb += ((char)(c+32));
			} else{
				sb += c;
			}
		}
		return sb;	
	}
```


----------



## TRunKX (13. Nov 2007)

Klasische Schulaufgabe.....
Also die erste Antwort war eigentlich schon alles was du benötigst.

Mach dir einen neuen String den du Positionsweise füllst Zeichen für Zeichen. dann kannste entweder anhand des Ansi wertes für jedes Zeichen die Großbuchstaben finden oder anhand eines großen vergleichs. bei ANSI ziehst du von dem aktuellen wert eine gewisse Menge ab um das kleingeschrieben gegenteil zu bekommen.

aber warum keine Methoden benutzen? Sag deinem Lehrer er kann dich ma Arsch lecken das du nicht benutzen darfst was Java ausmacht.


----------

