Sting -> Array, leere Stellen löschen

TrudleR

Mitglied
Hallo

Ich komme einfach nicht weiter.
Mit "charAt()" kann man ja bekanntlich einen String in einen Char-Array umwandeln (for-schleife). Nun wird gesagt, dass ein String nich nur aus seiner Länge besteht, sondern auch aus sogenannten "Contents". Also der String "Hallo" hat die Länge 5, aber die Contents wären zB 16.

Nun soll ich diese Contents genau auf die Länge des Strings herunterbekommen. Es kann jedoch auch sein, dass ein String bereits am Anfang nicht vernwendete Contents hat (1. Frage hierzu: Sind da dann "null"-Werte gespeichert oder einfach ein " "?).

Übergeben an die Methode in der Klasse (MyString0) werden nur 2 booleans, nämlich "left" und "right".

Code:
	public void trim(boolean left, boolean right){  			// Leerzeichen an Rändern abschneiden	
}

2. Frage. Was bringen mir diese 2 booleans, hat da jemand eine Idee? Aus der Aufgabenstellung wird das leider nicht ersichtlich. Rein logisch für mich dachte ich mal, die booleans sagen, ob Link/Rechts zu viele Null-Zeichen vorhanden sind. Aber dann müsste Java ja schon im voraus wissen, ob es überhaupt was abzuschneiden gibt.

3. Frage: Wie kann ich gezielt die leeren Contents-stellen entfernen? Und sehen diese eventuell gleich aus wie einfache Leerzeichen? Dann hätte ich nämlich das Problem, dass mehrwörtrige Strings zu einem Wort verbunden werden.

Ich hoffe, ihr werded aus dieser Fragestellung schlau.

Gruss
Trudler
 
Ein String kann nicht verändert werden. Die Booleans werden angeben, ob links oder rechts Whitespaces entfernt werden.
Ansonst: ???:L
Nicht verwendeter Content? Nullwerte in einen primitiven Array? Array verkleinern?
 
das geht viel einfacher. toCharArray



Ich nehme an die geben dir an ob die Leerzeichen am Anfang (left) oder am Ende (right) entfernt werden sollten.

Ok möglich. Das wäre allerdings net das Problem. Wir sind noch ziemlich in den Basics.

@Volvagia: Nein, die Leerstellen sind im String, werden dann aber in den Array übernommen.

PS: Ich habe manchmal auch so meine Mühe, bei diesem Lehrer die genaue Aufgabendefinition zu erkennen. Mehr kann ich leider nicht liefern.

Gruss
Trudler
 
Du kannst wie AmunRa schrieb die Chars zurückgeben lassen. Dann zählst du links und rechts (bzw. vorne und hinten) je nach booleans wie viele Leerzeichen kommen, erzeugst ein neues Array, kopierst die Chars ohne den Leerzeichen in das neue Array und erzeugst einen neuen String. Den kannst du dann zurückgeben.

Ich denke das ist gefordert.
 
Habe meinen Code mal zusammengeschnetzelt und auf Pastebin gekleistert:
public class MyString0 { private int m_length; private char[] m_content - Pastebin.com

Boolean und den ganzen Mist habe ich mal entfernt.

Im ersten Block der Trim Methode entfernt er alle leeren Anfangszeichen. Im 2. soll er die leeren Stellen am Ende abschneiden.

Bei der letzen Linie motzt er allerdings (m_contents.length -= counter😉:

- The final field array.length cannot be assigned
- Line breakpoint:MyString0 [line: 89] - trim()

Jemand ne Ahnung, was es da zu meckern gibt? Am "final" Präfix bei den Attributen liegts nicht. Das hätte ich für diese Methode wohl auch noch mitlöschen können.
Mit dieser Lösung könnte ich mich dann vorerst zufrieden geben.

Danke schonmal für eure bereits geleistete Mühe 🙂

Trudler
 
Final einer Variable hat nichts mit dem gekapselten Inhalt zu tun. (WICHTIG!)
In dem Fall ist die Eigenschaft aber final.
Arrays können in der Größe nicht geändert werden. Du musst ein neues Array mit der Wunschlänge erzeugen.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben