String + Platzhalter

the0MIKE

Mitglied
Hi Leute,

ich belästige euch jetzt damit weil ich einfach nichts dazu finde.

Da ich leider nicht weiß wie ich danach suchen soll, bekomme ich dementsprechend auch zu keiner lösung...

Wenn ich z.B. einen String auf ein Wort prüfe, ob es vorhanden ist, ich jedoch nur den Anfang vom word kenne, wie setzte ich einen Platzhalter davür?

Dachte eig. "wort*", und hatte auch in erinnerung das * für mehrerer Zeichen und ? für ein zeichen stehen.
Zudem hatte ich in erinnerung das es sich dabei um eine Wildcard handelt. Wenn ich danach aber suche bekomme ich etwas andereres und bei einer abfrage ob "wort*" vorkommt versteht er das nicht...

Hoffe auch hilfe auch wenn sie recht einfach zu lösen ist.

🙂

Gruß,
Mike
 
Du willst alle Wörter die mit Wort anfangen durch einen anderen String ersetzen?

Java:
String text = "Dies ist ein Wort mit vielen Wortblub und Wortblas.";

text = text.replaceAll("Wort[\\S]*", "XXX");
 
oh vergessen genau zu erwähnen was ich eigentlich will ^^

Also ich prüfe gerade mit Selenium ob ein bestimmtes Element(gefunden per ID) im Sourcecode einer seite auftaucht.
Da es z.B. "wert-oben", "wert-rechts", und "wert-center" gibt, würde ich gerne das in eine abfrage packen.

also von wegen
Java:
if(driver.findElement(By.id("wert-*"){
//mach etwas
}

also praktisch ein wort suchen, das immer das gleiche enthält, aber zu einem teil unterschiedlich sein kann.
 
naja also das könntest du mit
Code:
String.indexOf(wort, startIndex)
machen.
Hab da mal was gebastelt:

Die Methode:

Java:
public static List<Integer> findWord (String stringToSearch, String wordToFind){
	List<Integer> indexList = new ArrayList<Integer>();
	stringToSearch = stringToSearch.toLowerCase();
	wordToFind = wordToFind.toLowerCase();
	int currentIndex = -1;
	
	do {
		currentIndex = stringToSearch.indexOf(wordToFind, currentIndex+1);
		if (currentIndex >= 0) indexList.add(currentIndex);
	} while (currentIndex >= 0);
	
	return indexList;
}

gibt beim Aufruf

Java:
String s = "Du, Mama, manche Malocher tragen Manschettenknöpfe!";
System.out.println(findWord(s, "Ma"));

folgendes aus:

Code:
[4, 6, 10, 17, 33]

...wenn die Liste leer ist, gibts das halt nicht.
Kannst das ja auch abspecken, falls du nur wissen willst, ob der String überhaupt vorkommt.

[EDIT]
Mir fällt grad was auf: Der gesuchte String darf nicht an Index 0 sein, also ganz am Anfang - dann findet die Methode den nicht. Aber das frickelste dir schon noch zurecht, hm? 😉
[/EDIT]

[EDIT]
EDIT 2: Schon verbessert! Findet jetzt alles!
[/EDIT]
 
Zuletzt bearbeitet:
Erstmal Danke 🙂

Aber das ist mir alles zu Kompliziert, also nicht das ich es nicht verstehe, ich will nur keine Function dafür ausführen.

Also wie gesagt es geht ja nicht wirklich darum herauszufinden ob das Wort im String vorkommt (naja eigentlich schon 🙂) sondern mehr darum das ich mehr als ein Wort habe, das ich auf vorhandensein prüfen möchte. Bei dem wort ist einmal etwas festes das immer gleich bleibt und einmal etwas mehr oder weniger dynamisches.

Also nochmal

Java:
String $dynamischeswort = "immer unterschiedlich";
String $fertigerstring = "festeswort("+$dynamischeswort+")";

if($fertigerstring == "festeswort*"){
//tu was
}

das * ändert sich immer und steht für das dynamische .
da gibt es doch sicher ein zeichen für das man dafür setzten kann
 
Du machst sonst eher PHP, was? 😉

Aber genau das kann doch String.indexOf:

Java:
if (fertigerstring.indexOf(festeswort) > -1){
     //...
}

Probiers aus.

[EDIT]
Bloß keine Sternchen! 😀
[/EDIT]
 
was machen die $ zeichen an deinen variablennamen?
strings sind objekte, da hat == nix zu suchen

lösung wurde nun schon mehrmals genannt

Java:
        System.out.println("festerTeil(salat)".matches("festerTeil[\\S]*"));
        System.out.println("festerTeil(salat)".startsWith("festerTeil"));
        System.out.println("festerTeil(salat)".contains("festerTeil"));
        System.out.println("festerTeil(salat)".indexOf("festerTeil") > -1);
 

Neue Themen


Zurück
Oben