# Leerzeichen innnerhalb eines Strings löschen



## Andre (1. Juli 2010)

Guten morgen zusammen =)
da das mein erster beitrag ist und auch mein erstes thema  stell ich mich mal schnell vor:  mein Name ist : Andre E.  bin 19 jahre alt und mach grad mein fach abi als ITA  .

Meine aufgabe :  ist das ich ein Morse Code Translator en muss ^^ .. hab das sowei hinbekommen also von Deutsch in Morse Code und zurück 
Wenn ich z.b den text " hallo welt " in Morse Code darstelle bekomm ich diese zeichen heraus "  .... .-  .-..  .-..  ---              .--  .   .-..    -     "  <== das stimmt schon alles

Wenn ich das dann wieder zurück übersetzte kommt dann " hallo        welt " raus, also übernimmt er die Leerzeichen alle mit.

Mein Problem: Da es ein normaler satz sein soll solte zwischen den wörtern nur 1 Leerzeichen stehen also " hallo welt "  und das egal wieviele Leerzeichen man eingibt ( also im Morse Code ) 

Meine Frage: Gibt es nen befehl der die Leerzeichen aus dem string löscht aber nur die in der mitte ( weil zwischen den punkten und strichen, also die einzelnen buchstaben,  sind ja auch leerzeichen  >  **** *- *- **  ) ? 
                                  |   |      

Würd mich um eine schnelle Antwort freuen =)


----------



## vfl_freak (1. Juli 2010)

versuch's mal mit _*replace*_

Gruß
Klaus


----------



## Andre (1. Juli 2010)

jo hjab ich auch schon drüber nachgedacht aber das problem ist ja das er dann alle leerzeichen löscht oder erstetzt und es dürfen ja nur die in der mitte erstetzt werden


----------



## Akeshihiro (1. Juli 2010)

Die äußeren Leerzeichen kannst du mit trim() wegmachen.

```
String hallo = " hallo welt ".trim();
```
Was die Leerzeichen zwischen den Wörtern angeht, so musst du dir da was eigenes überlegen. Du sagstest, dass du da jeweils nur ein Leerzeichen haben willst, wenn also mehrere Leerzeichen vorhanden sind, dann müsstest du diese kürzen. Das gingen z.B. mit replace().

```
String hallo = "          hallo        welt     und     so       ";
System.out.println(hallo);	// Testausgabe

// Äußere Leerzeichen löschen
hallo = hallo.trim();

// Mehrfachleerzeichen auf eines reduzieren
while(hallo.contains("  ")) {
	hallo = hallo.replace("  ", " ");
}
System.out.println(hallo);	// Hat alles geklappt? (Testausgabe)
```


----------



## deepthroat (1. Juli 2010)

Hi.

@Andre: Warum willst du denn im Nachhinein die Leerzeichen entfernen die du selbst reingebastelt hast? Ignoriere doch einfach mehrfache Leerzeichen wenn du den Morsestring interpretierst und gib immer nur eins aus.

Gruß


----------



## andreay (1. Juli 2010)

hi hab grad versucht mich zu Registrieren aber komme keine mail >.> 

Wo bekomm ich so code box her ? ^^ oder muss ich dafür angemeldet sein ?


----------



## vfl_freak (1. Juli 2010)

andreay hat gesagt.:


> hi hab grad versucht mich zu Registrieren aber komme keine mail >.>


was genau meinst Du 



andreay hat gesagt.:


> Wo bekomm ich so code box her ? ^^ oder muss ich dafür angemeldet sein ?


Vermute ich richtig, dass Du die Code-Tags meinst 
Das ist der #-Button im Editor oder besser gleich händisch durch Umschliessen der relevanten Zeilen mit [_JAVA_] Test [_/JAVA_] (OHNE die Unterstriche) !!
Das wird dann zu

```
Test
```

Gruß
Klaus


----------



## deepthroat (1. Juli 2010)

*[OT] AW: Leerzeichen innnerhalb eines Strings löschen*



vfl_freak hat gesagt.:


> Das ist der #-Button im Editor oder besser gleich händisch durch Umschliessen der relevanten Zeilen mit [_JAVA_] Test [_/JAVA_] (OHNE die Unterstriche) !![


 @vfl_freak: Kennst du denn schon das noparse Tag? Damit kann man [code=java]  [/code] schreiben... 

Gruß


----------



## HonniCilest (1. Juli 2010)

andreay hat gesagt.:


> hi hab grad versucht mich zu Registrieren aber komme keine mail >.>
> 
> Wo bekomm ich so code box her ? ^^ oder muss ich dafür angemeldet sein ?



Einfach den Codetext in folgende Tags packen:

[ java][ /java]  (natürlich ohne das Leerzeichen nach der ersten Klammer)

Edit: Entshculdigung, habe die vorherigen Antworten noch nicht gelesen, hatte wohl zu lange die Seite ungelesen offen ^^


----------



## andreay (1. Juli 2010)

ja wenn ich das richtig gelesen hab bekomm ich ne Bestätigungsmail um meinen Account zu aktivieren und naja ich hab grad mal nachgeschaut ist immer noch keine da und das ist jetzt schon fast 20 min. her xD 

Ps. Binn mal schnell in der mittagspause  
und danke schon mal für die Zahlreiche Hilfe


----------



## vfl_freak (1. Juli 2010)

Moin,



deepthroat hat gesagt.:


> @vfl_freak: Kennst du denn schon das noparse Tag?
> Damit kann man [code=java]  [/code] schreiben...



Nein, nicht wirklich :-(
Ich finde das aber - vor allem bei kleineren Schriftgrößen - etwas unübersichtlich ... und das es OHNE Leerzeichen sein muss, muss dann doch dabei geschrieben werden (vgl. Post von HonnieCelest) 
Die Unterstriche (o. ä.) finde ich da übersichtlicher ...

Gruß
Klaus


----------



## deepthroat (1. Juli 2010)

vfl_freak hat gesagt.:


> Ich finde das aber - vor allem bei kleineren Schriftgrößen - etwas unübersichtlich ... und das es OHNE Leerzeichen sein muss, muss dann doch dabei geschrieben werden (vgl. Post von HonnieCelest)
> Die Unterstriche (o. ä.) finde ich da übersichtlicher ...


Bei mir sind aber keine Leerzeichen dabei. Das ist ja der Sinn von [plain ][ /plain].

Offenbar kennt HonniCilest das noparse Tag auch nicht...

Gruß


----------



## HonniCilest (1. Juli 2010)

deepthroat hat gesagt.:


> Bei mir sind aber keine Leerzeichen dabei. Das ist ja der Sinn von Plain.
> 
> Offenbar kennt HonnieCelest das noparse Tag auch nicht...
> 
> Gruß



Jetzt schon ;-)


----------



## vfl_freak (1. Juli 2010)

deepthroat hat gesagt.:


> Bei mir sind aber keine Leerzeichen dabei



hmm, bei mir hier sah es so ... vlt. liegt es aber auch an meinen hohen Alter ... das wird das Gucken immer schwerer 

Gruß
Klaus


----------



## andreay (1. Juli 2010)

also ich hab grad mal nen azubi gefragt wie ich das vielleicht machen könnte ( mit boolean ) .. ich meld mich wenns nicht klapp


----------



## Andre (2. Juli 2010)

Guten morgen nochmal =) hab jetzt mit na for schleife gelöst  
trotzdem nochmal danke an alle


----------



## SPiKEe (4. Juli 2010)

hi ...
gut das du es gelöst hast ...
verräts du uns dann auch bitte wie ?

zum problem : am einfachsten wäre das du beim übersetzen von plain-text in morse-code die leerzeichen *also 0x20* durch eine spezielle more-code darstellung codierst ...
so kannst du zwischen die einzelnen zeichen im morse-code beruhigt deine leerzeichen setzen  und schreibst dann in dem sinne bei der rückübersetzung alles hinter ein ander
da dabei auch das leerzeichen geparsed wird wird dieses ebenfalls einfach geschrieben und schon hast du das leerzeichen ...
ist dann zwar etwas komisch wenn du mit jemanden via morse-code kommunizierst der dieses zeichen dann nicht oder falsch interpretiert ...
aber solange es erstmal nur für den eigengebraucht ist ist das kein problem


----------



## Andre (5. Juli 2010)

hoi ^^ kann ich machen ^^



```
....

           for (int i = 0; i < satz.length(); i++) {
 // wenn kein leerzeichen vorhanden füge zeichen für zeichen hinten dran
                if (satz.charAt(i) != ' ') {
                    nachdeutsch = nachdeutsch + Character.toString(satz.charAt(i));
// zur überprüfung der leerzeichen
                    lz = 0;
                } else {
// wenn leerzeichen dann gehe in morseNachFeutsch 
                    nachdeutsch = morseNachDeutsch(nachdeutsch);

                }

            }

.....
```

morseNachDeutsch


```
....

// wenn nachdeutsch den gleichen string hat dann gebe den buchstaben aus
 if (nachdeutsch.equalsIgnoreCase("--..")) {
            System.out.print("z");
        }


        if (lz == 0) {
            lz++;
        }
        if (lz == 1) {
            if (nachdeutsch.equalsIgnoreCase("")) {
                lz++;
                System.out.print(" ");
            }
        }



        if (nachdeutsch.equalsIgnoreCase("......")) {
            System.out.print(".");
        }
//leere nachdeutsch und gebe es zurück 
        nachdeutsch = "";
        return nachdeutsch;
    }
```

ich weiß das es einfacher oder auch kürzer geht ^^ . 
wenn fragen sind fragt


----------

