Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab eine Methode geschrieben, die einen übergebenen String in *** umwandelt.
Leider hab ich bisher folgende Probleme:
1. Bei mehreren Wörtern wird auch das Leerzeichen in * umgewandelt, obwohl ich lieber da ein Leerzeichen gerne hätte.
2. Ich will nicht den gesamten Text, sondern immer einen beliebigen Textabschnitt in *** umwandeln.
Leider weiß ich nicht, wie ich diese beiden Probleme lösen kann.
Bisher mein Code:
Code:
public class Test {
public String stern(String string) {
String sterne = "";
for (int i = 0; i < string.length(); i++) {
sterne = sterne + "*";
}
return sterne;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Test text = new Test();
System.out.println("Einen Satz eingeben.");
System.out.println(text.stern(sc.nextLine()));
sc.close();
}
}
Du könntest mit der replaceAll Methode arbeiten. Lass dir, anhand der Länge des Wortes welches maskiert werden soll, einen String mit n * generieren. Dann kannst du über die replaceAll Methode das gesuchte Wort mit dem erstellten * String ersetzen.
Naja wenn du deinen String mit dem Text hast und ein String mit dem Wort das du ersetzen willst.
Java:
String wort = "heute";
String satz = "Heute ist Mittwoch";
// Kannst du dir eine Methode machen die
// dir so viele sterne erzeugt wie das Wort
// lang ist
private String generateMarker(int len)
{
StringBuilder b = new StringBuilder();
for(int i=0; i< len; i++)
b.append("*");
return b.toString();
}
// Jetzt kannst du die replaceAll() Methode
// auf den Satz anwenden
text.replaceAll(wort, generateMarker(wort.length());
//was du das ganze jetzt noch case-
//insensitiv machen willst musst du
"(?i)"
// vorne an das Wort anhängen, Welches du //ersetzen willst. Dann wird Hallo wie HAlLo //oder hallo etc behandelt
Es gibt sicherlich - wie Klaus schon angemerkt hat - noch andere Methoden und Wege
Ich hab das jetzt mit dem beliebigen String gelöst, indem ich java.util.Random benutzt habe, aber wie füge ich jetzt den String wieder zusammen, dass das in Sternen geschriebene Wort an der Richtige Stelle ist
Hat sich schon geklärt. Ich hab jetzt eher ein Problem mit den Sonderzeichen. Zum Beispiel ? wirft mir eine PatternSyntaxException. Wie entferne ich also die Sonderzeichen am besten aus einem String Array?
Wenn du den Text in einer GUI darstellen möchtest, (was ich vermute) kannst du ein sogenanntes JPasswordField benützen, welches den Text automatisch beim Eintragen in Sternchen umwandelt. Möchtest du es wie ein JLabel benützen einfach folgende Sachen machen:
<name>.setBackground(getContentPane().getBackground());
<name>.setBoarder(null);
<name>.setEditable(false);
hoffe ich konnte dir helfen.
Wenn du den Text in einer GUI darstellen möchtest, (was ich vermute) kannst du ein sogenanntes JPasswordField benützen, welches den Text automatisch beim Eintragen in Sternchen umwandelt.