Wie kann ich einen String wieder zusammensetzen und ausgeben lassen?

NoGoogle

Mitglied
Hey, ich komme momentan auf keinen Lösungsweg. Ich schreibe ein Programm, mit dem Strings hinsichtlich der Groß- und Kleinschreibung verändert werden. Steht vor einem String in einem Satz ein "_", so soll dieser String komplett groß geschrieben werden. Steht am Ende eines Strings des Satzes jedoch ein "_", so soll dieser String komplett klein geschrieben werden.
Das habe ich soweit alles hinbekommen. Nur mein Problem ist jetzt die Ausgabe des Strings.

Will ich den kompletten Satz ausgeben, so kriege ich es momentan nur hin, die veränderten Strings auszugeben, nicht aber wieder den kompletten Satz. Also bspw: _Ich habe _Hunger. Dann erhalte ich nur ICH HUNGER. Das "habe" hängt er nicht an.
Hier mal die Klasse SplitString. Die Methoden der Groß- und Kleinschreibung habe ich jetzt nicht mit angehängt.

Ich bin über jeden Lösungsvorschlag dankbar.



Java:
import java.lang.reflect.Array;
import java.util.ArrayList;

public class SplitString {
    String input2,input3;
    String input4,input5;
    UpperCase change = new UpperCase();
    LowerCase changeone = new LowerCase();
    


    public void split(){
        String input = new java.util.Scanner(System.in).nextLine();
        String array1[] = input.split(" ");
        String sentences[] = input.split(" ");
        System.out.println("Input: " + input);
        for (String temp : array1) {
            if (temp.startsWith("_")) {
                input2 = change.upperCase(temp);
                input3 = input2.replace("_"," ");
              
                System.out.print(input3);
            }
            if(temp.endsWith("_")){
                input4 = changeone.lowerCase(temp);
                input5 = input4.replace("_"," ");
                System.out.println(input5);
            }else{

            }
        }
    
    }
}
 

NoGoogle

Mitglied
Dein else Teil, noch nicht an der richtigen Stelle, ist ja noch leer.
Mit dem Else-Teil habe ich schon "einiges" probiert, habe aber irgendwie nie die richtige Ausgabe hinbekommen.

Aber ich habe jetzt eine hoffentlich gute Lösung gefunden. Für alle anderen Satzteile:
Java:
 if(!temp.startsWith("_") && (!temp.endsWith("_"))){
                    System.out.print(temp+" ");
                }
 

mihe7

Top Contributor
@NoGoogle Deine Lösung funktioniert nicht wirklich. Erstens wird der falsche Unterstrich ersetzt, wenn dieser im und am Ende eines Worts steht, zweitens wird immer ein Leerzeichen zu viel ausgegeben.

In Zusammenhang mit Deinem Eingangspost: wenn Du das Gefühl hast, den Wald vor lauter Bäumen nicht mehr zu sehen, bietet es sich an, den Spaß in kleinere Probleme aufzuteilen, die leichter handhabbar sind.

Ich schreibe ein Programm, mit dem Strings hinsichtlich der Groß- und Kleinschreibung verändert werden. Steht vor einem String in einem Satz ein "_", so soll dieser String komplett groß geschrieben werden. Steht am Ende eines Strings des Satzes jedoch ein "_", so soll dieser String komplett klein geschrieben werden.
Um bei diesem Beispiel und Deinem Ansatz zu bleiben, könnte man sich folgendes Vorgehen überlegen:

1. Teile den String in Einzelteile
2. Transformiere jedes Einzelteil
3. Baue einen String aus den Einzelteilen zusammen
4. Gib den String aus 3. aus

Das kann man praktisch unmittelbar als Code formulieren:
Java:
String[] parts = input.split(" "); // 1. Schritt
transform(parts); // 2. Schritt
String result = String.join(" ", parts); // 3. Schritt
System.out.println(result); // 4. Schritt

Von den Problemen 1 - 4 sind die Nummern 1, 3 und 4 bereits gelöst. Das Probleme 2 schaut man sich nun separat an.

Was muss bei der Transformation passieren? Auch hier teilen wir wieder in kleinere Probleme auf. Das erreicht man, indem man darauf verzichtet, zu beschreiben, wie einzelne Wörter transformiert werden sondern sich damit begnügt, dass sie transformiert werden.

Die Methode transform erhält also ein Array und ersetzt in diesem jedes Element durch ein transformiertes:
Java:
private void transform(String[] parts) {
    for (int i = 0; i < parts.length; i++) {
        parts[i] = transformWord(parts[i]);
    }
}
Ziemlich einfach.

Die Methode transformWord ist jetzt fast trivial: beginnt das Wort, das die Methode erhält, mit einem Unterstrich, soll das Wort ohne den Unterstrich in Großbuchstaben zurückzugeben. Analog gilt dies für den Unterstrich am Ende mit Kleinbuchstaben. Hat das Wort dagegen weder am Anfang noch am Ende einen Unterstrich, wird es unverändert zurückgegeben.

Java:
private String transformWord(String word) {
    String result = word;
    if (word.startsWith("_")) {
        result = word.substring(1);
    } else if (word.endsWith("_")) {
        result = word.substring(0, word.length()-1);
    }
    return result;
}
 
X

Xyz1

Gast
Oder so
Java:
	public static void main(String[] args) throws IOException {
		for (String string : new Scanner(System.in).nextLine().split(" ")) {
			if (string.startsWith("_")) {
				System.out.print(string.substring(1).toUpperCase() + " ");
			} else if (string.endsWith("_")) {
				System.out.print(string.substring(0, string.length() - 1).toLowerCase() + " ");
			} else {
				System.out.print(string + " ");
			}
		}
	}


Code:
_Heute _phantastisches Wetter._
HEUTE PHANTASTISCHES wetter.
 

NoGoogle

Mitglied
@NoGoogle Deine Lösung funktioniert nicht wirklich. Erstens wird der falsche Unterstrich ersetzt, wenn dieser im und am Ende eines Worts steht, zweitens wird immer ein Leerzeichen zu viel ausgegeben.

In Zusammenhang mit Deinem Eingangspost: wenn Du das Gefühl hast, den Wald vor lauter Bäumen nicht mehr zu sehen, bietet es sich an, den Spaß in kleinere Probleme aufzuteilen, die leichter handhabbar sind.


Um bei diesem Beispiel und Deinem Ansatz zu bleiben, könnte man sich folgendes Vorgehen überlegen:

1. Teile den String in Einzelteile
2. Transformiere jedes Einzelteil
3. Baue einen String aus den Einzelteilen zusammen
4. Gib den String aus 3. aus

Das kann man praktisch unmittelbar als Code formulieren:
Java:
String[] parts = input.split(" "); // 1. Schritt
transform(parts); // 2. Schritt
String result = String.join(" ", parts); // 3. Schritt
System.out.println(result); // 4. Schritt

Von den Problemen 1 - 4 sind die Nummern 1, 3 und 4 bereits gelöst. Das Probleme 2 schaut man sich nun separat an.

Was muss bei der Transformation passieren? Auch hier teilen wir wieder in kleinere Probleme auf. Das erreicht man, indem man darauf verzichtet, zu beschreiben, wie einzelne Wörter transformiert werden sondern sich damit begnügt, dass sie transformiert werden.

Die Methode transform erhält also ein Array und ersetzt in diesem jedes Element durch ein transformiertes:
Java:
private void transform(String[] parts) {
    for (int i = 0; i < parts.length; i++) {
        parts[i] = transformWord(parts[i]);
    }
}
Ziemlich einfach.

Die Methode transformWord ist jetzt fast trivial: beginnt das Wort, das die Methode erhält, mit einem Unterstrich, soll das Wort ohne den Unterstrich in Großbuchstaben zurückzugeben. Analog gilt dies für den Unterstrich am Ende mit Kleinbuchstaben. Hat das Wort dagegen weder am Anfang noch am Ende einen Unterstrich, wird es unverändert zurückgegeben.

Java:
private String transformWord(String word) {
    String result = word;
    if (word.startsWith("_")) {
        result = word.substring(1);
    } else if (word.endsWith("_")) {
        result = word.substring(0, word.length()-1);
    }
    return result;
}
Vielen Dank für diese ausführliche Antwort. Ich habe meinen Code nun nach diesem Vorschlag erneut bearbeitet. Dabei ist mir aber aufgefallen, dass bei der Methode transformWord für beide Fälle, also Groß- und Kleinschreibung, noch die Methode toUpperCase bzw. toLowerCase fehlt.

Richtig wäre es doch so? Und welche Bedeutung hat eigentlich die Methode substring?
Java:
private String transformWord(String word){
        String result = word;
        if(word.startsWith("_")){
            result = word.substring(1).toUpperCase();
        }
        else if(word.endsWith("_")){
    result = word.substring(0,word.length()-1).toLowerCase();
        }
        return result;
    }
 

mihe7

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
J Mit for Schleife einen String Rückwärts befüllen Java Basics - Anfänger-Themen 9
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
J Erste Schritte Wie kann ich einen String in eine If einbauen :)? Java Basics - Anfänger-Themen 12
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
E Was ergibt trim() auf einen leeren String Java Basics - Anfänger-Themen 3
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
A Variablen Übergeben des Inhalts einer Variable in einen String Java Basics - Anfänger-Themen 17
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
C Ein String in einen anderen String "übergeben" Java Basics - Anfänger-Themen 14
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
M Quelltext auslesen und diesen in einen String schreiben Java Basics - Anfänger-Themen 3
B Aus Text Zeile einen String herauslesen Java Basics - Anfänger-Themen 11
W In einen String schreiben Java Basics - Anfänger-Themen 9
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Einen neuen String ohne Array oder List erzeugen??? Java Basics - Anfänger-Themen 13
W elemente eines arrays in einen string schreiben Java Basics - Anfänger-Themen 3
L mit "assert" einen String prüfen Java Basics - Anfänger-Themen 5
J String soll einen Zahlenwert ausgeben? Java Basics - Anfänger-Themen 9
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
B Datentypen Char Array in einen String verwandeln? Java Basics - Anfänger-Themen 2
B Listeinträge in einen String schreiben Java Basics - Anfänger-Themen 4
Z Wie Byte[] in einen String oder int konvertieren Java Basics - Anfänger-Themen 2
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
S Prüfen, ob ein String einen Bindestrich enthält Java Basics - Anfänger-Themen 3
S BBCodes in einen String setzen Java Basics - Anfänger-Themen 7
Antoras Einen zufälligen String auswählen Java Basics - Anfänger-Themen 5
K Wie zerlege Ich einen String zum Rechnen? Java Basics - Anfänger-Themen 3
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
M Variablenbezeichner in einen String umwandeln Java Basics - Anfänger-Themen 4
P Methode um einen String zu überprüfen Java Basics - Anfänger-Themen 12
I Server / Client Programm wie einen String übergeben? Java Basics - Anfänger-Themen 6
N Aus Textdatei jede Zeile in einen String lesen Java Basics - Anfänger-Themen 22
A Einen String in einen Variablentyp verwandeln Java Basics - Anfänger-Themen 22
N Wie caste ich ein Object in einen String? Java Basics - Anfänger-Themen 7
M Wie ersetzt man einen String mit eckigen Klammern Java Basics - Anfänger-Themen 5
T StackTrace in einen String speichern Java Basics - Anfänger-Themen 3
halla Character-Array in einen String umwandeln Java Basics - Anfänger-Themen 3
F Leerzeichen in einen String einfügen. Java Basics - Anfänger-Themen 15
J Lesen einer Datei in einen String oder Char? Java Basics - Anfänger-Themen 3
T In einer HashMap einen String löschen Java Basics - Anfänger-Themen 20
G Ein int zu in einen String umwandeln? Java Basics - Anfänger-Themen 9
S Einen langen String beim Leerzeichen in zwei Strings zerlege Java Basics - Anfänger-Themen 3
N an einen String[] hinten einen String hinzufügen Java Basics - Anfänger-Themen 8
G einen int-wert als String ausgeben Java Basics - Anfänger-Themen 4
J Datei öffnen und String durch einen anderen String ersetzen. Java Basics - Anfänger-Themen 15
C Hex-String ind einen byte[] umwandeln? Java Basics - Anfänger-Themen 6
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
T Color aus einen String Java Basics - Anfänger-Themen 5
G Elemente in einem String-Array in einen String umwandeln Java Basics - Anfänger-Themen 2
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
S Timer vs ExecutorService: jeden Sonntag um 14.00 Uhr einen Task starten..? Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
N Gibt es hierfür einen Shortcut Java Basics - Anfänger-Themen 5
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
L GUI- wie cancel ich einen Timer? Java Basics - Anfänger-Themen 10
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
Devin Wo kann man einen Java Lehrplan finden? Java Basics - Anfänger-Themen 5
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
S First Time Mave: Wie ergänze ich einen Source-Folder? Java Basics - Anfänger-Themen 10
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
O Ziehen im Array um einen Schritt in eine einzige beliebige Richtung Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben