2017-12-17 4 views
1

Wie bekomme ich meine toString-Methode, um nur bestimmte Teile eines Strings zurückzugeben, zum Beispiel habe ich eine Variable für einen Namen und Nachnamen mit einem Konstruktor. Ich mag eine toString-Methode verwenden, so dass es nur die ersten Buchstaben jeden Namen gibt den Rest mit einem Platzhalter zum Beispiel einer Füllung ‚-‘Java toString() Informationen ausblenden

enter code here 

private String foreame = null; 
private String surname = null; 

public FullName(String forename, String surname) 
{ 
    this.forename = forename; 
    this.surname = surname; 
} 

Damit ich eine Ausgabe wie ‚J bekommen konnte --- - r--‘für den Namen James Roy

+8

Überschreiben Sie die 'toString()' Methode. – Sedrick

Antwort

3

In der Klasse, Überschreiben Sie die Methode toString als solche:

@Override 
public String toString() { 
    return forename.replaceAll("\\B\\w", "-")) + " " + surname.replaceAll("\\B\\w", "-")); 
} 

oder prägnanter:

@Override 
public String toString() { 
    return (forename + " " + surname).replaceAll("\\B\\w", "-"); 
} 

Der replaceAll ersetzt alle bis auf das erste Zeichen in den Strings mit dem Token "-", um das gewünschte Ergebnis zu erzielen.

Here's a very helpful link for working with Regex. Beachten Sie, dass, weil Java das '\' als Escape-Token verwendet, Sie zwei wie gezeigt verwenden müssen.

+1

Ich habe diese Anforderung verpasst. – Sedrick

+0

Ah ja, das funktioniert super danke, Könntest du ein bisschen erklären, wie das "\\ B \\ w" funktioniert, wenn ich zum Beispiel nur den letzten Buchstaben oder sowohl den ersten als auch den letzten schreiben möchte, was machen die Symbole eigentlich? – Shingix

+0

Das "\\ B \ w" ist ein regulärer Ausdruck. Das \ B überprüft, um sicherzustellen, dass das aktuelle Zeichen NICHT an einer Wortgrenze ist, wodurch das erste Zeichen ausgeschlossen wird. Das \ w stimmt mit jedem Wortzeichen überein (Abkürzung für [a-zA-Z_0-9]). Als Kombination wird das erste Zeichen (wie auf der Wortgrenze) ausgeschlossen, und die restlichen Zeichen werden miteinander verglichen. Wenn Sie sowohl für die erste als auch für die letzte möchten, würden Sie aus dem gleichen Grund "\\ B \ w \ B" verwenden. Ich werde einige hilfreiche Regex-Links hinzufügen. – Zachary

Verwandte Themen