String-Methoden (Hilfe gesucht)
-
Hallo!
Ich habe die folgende Aufgabenstellung zu bewältigen:
Erstellen Sie eine statische Methode ersetzeGleichklingend mit einen Argument s vom
Typ String, die einen String-Wert zurück gibt.
In dieser Methode sollen ähnlich- oder gleichklingende Konsonantenin der Zeichenkette s durch ein einziges Zeichen ersetzt werden.Wandeln Sie die Zeichenkette s zunächst in Großbuchstaben um, und fügen Sie das Dollarzeichen an den Anfang von s an. Führen Sie anschließend folgende Substitutionen in der angegebenen Reihenfolge durch:
1. PH => F
2. V => F
3. W => F
4. B => PGeben Sie die veränderte Zeichenkette ohne Dollarzeichen zurück. Verwenden Sie zum Lösen dieses Aufgabenteils die Methoden toUpperCase(), replace(), substring() und length() der String-Klasse.
Also erstelle ich eine solche Methode und wandle s zunächst in Großbuchstaben um:
static String ersetzeGleichklingend(String $s){ $s = $s.toUpperCase(); }
Und beim nächten Schritt scheitere ich leider kläglich.
Wie kann ich zB. PH durch F ersetzen?
Mit $s= $s.replace("PH","F");
geht es ja nicht, weil replace() zwei chars verlangt.
Außerdem weiß ich nicht, wozu man hier length() und substring() braucht.
Weiß jemand Rat?
Danke im Voraus
h3lios
PS: Programmiere mit Java 5
-
edit... upps... hab dein text nicht richtig gelesen... mom, ich überleg mir kurz mal ne 'richtige' lösung...
edit2: hast du schon die Lösung, wenn man nur ein Zeichen umwandeln muss?edit. so könnte es gehen:
if (s.length()>1)return (s.substring(s.length()-1).replace('H','F'));
ndT Lupo
Zeiten ändern sich, Instinkte nicht!
^Sönke Burkert^
-
Aehm, wieso $s?
Da steht doch dass man dem Text ein $ anfügen soll und nicht der Variablen?
Sind wir hier in Basic?
-
h3lios schrieb:
Erstellen Sie eine statische Methode ersetzeGleichklingend mit einen Argument s ...In dieser Methode sollen ähnlich- oder gleichklingende Konsonantenin der Zeichenkette s durch ein einziges Zeichen ersetzt werden.
...
3. W => FSeit wann klingt denn W wie F?
Wasser => Fasser, Welle => Felle???
-
Gruml. Hab' herausgefunden, dass replace doch strings akzptiert.
-
CengizS schrieb:
Aehm, wieso $s?
Da steht doch dass man dem Text ein $ anfügen soll und nicht der Variablen?
Sind wir hier in Basic?Ne, da steht doch, man solle es vor s anfügen.
-
Lupo4u2 schrieb:
edit... upps... hab dein text nicht richtig gelesen... mom, ich überleg mir kurz mal ne 'richtige' lösung...
edit2: hast du schon die Lösung, wenn man nur ein Zeichen umwandeln muss?edit. so könnte es gehen:
if (s.length()>1)return (s.substring(s.length()-1).replace('H','F'));
ndT Lupo
Zeiten ändern sich, Instinkte nicht!
^Sönke Burkert^mit s.length()-1 löschst du doch den ganzen String...
Bzw. aus der Erkenntnis, dass replace() auch Strings akzeptiert, bin ich auch nicht viel schlauer geworden. Jetzt habe ich halt 19 Mal abgetipp: $s = $s.replace("Buchstabe(en)","Buchstab(en)"). Weiß aber noch immer nicht, wie ich nun s ohne $ zurückgeben soll und wozu substring und legth
Achso: Was bedeutet denn das $ vor dem s überhaupt?
-
also das $ machst du wieder weg. Weil eine Variable nicht aus dem $-Zeichen bestehen darf.
und fügen Sie das Dollarzeichen an den Anfang von s an
Das würde ich eher so verstehen:
String s="Hallo"; // $ voranstellen s="$"+s; // also "$Hallo"
PS: In PHP steht z.B. immer ein $ vor dem variable namen. Bsp.: $text="Hallo"; $i=0;
EDIT:
Vlt. könnt die Methode so aussehen (ungestestet):
public static String ersetzeGleichklingend(String s) { s=s.toUpperCase(); s="$"+s; s=s.replaceAll("PH", "F"); s=s.replaceAll("V" , "F"); s=s.replaceAll("W" , "F"); s=s.replaceAll("B" , "P"); /* geht bestimmt geschickter, indem man nen gescheiten regexp entwirft, bin aba grad zu Faul dafür. */ return s.substring(1); }
-
Er soll doch nicht replaceAll, sondern replace verwenden. Sonst ist es doch zu einfach.
-
rudirotnase schrieb:
Er soll doch nicht replaceAll, sondern replace verwenden. Sonst ist es doch zu einfach.
uuups...stimmt ja
Vlt. so:
public static String ersetzeGleichklingend(String s) { s=s.toUpperCase(); s="$"+s; for(int i=2; i<s.length(); ++i) { if('H'==s.charAt(i) && 'P'==s.charAt(i-1)) s=s.substring(0, i-1)+"F"+s.substring(i+1); } s=s.replace('V' , 'F'); s=s.replace('W' , 'F'); s=s.replace('B' , 'P'); return s.substring(1); }