Abkürzung umschreiben (lua-experte needed :))

cM2003

Welt-Boss
Registriert
22.12.2006
Beiträge
2.350
Reaktionspunkte
3
Kommentare
183
Buffs erhalten
131
Hallo.

Ich habe hier den folgenden Codeschnippsel:
Code:
 local newName = (string.len(oldName) > 20) and string.gsub(oldName, "%s?(.[\128-\191]*)%S+%s", "%1. ") or oldName -- "%s?(.)%S+%s"
Dieser bewirkt, dass ab 20 Zeichen die Namen abgekürzt werden. Heißt aus "Späher der Zandalari" wird ein "S. d. Zandalari". Ich aber hätte gerne ein "Späher d. Z."

Allerdings bin ich recht ratlos was das umschreiben des gsub codes angeht.

Hat wer eine Idee?

Danke und Gruß,
André
 
Hm kenn mich mit LUA zwar nich ganz so aus aber das sieht ganz nach regulären Ausdrücken aus. Vl stöhste auf was wende mal danach suchst. Gibt allerdings auch Tools(RegExBuddy) die dir sowas herstellen können aber verlass dich nich darauf.
 
"%s?(.[\128-\191]*)%S+%s", "%1. "

->

"%s(.[\128-\191]*)%S+%S", " %1."


Sollte funktionieren.
 
Danke, funktioniert
 
Sorry dass ich das nochmal hoch hole.
Wollte das ganze gerade noch erweitern, da ich beide Versionen als nicht ganz tauglich erachte...

Also war mein Plan eine If-Abfrage zu starten, ob das Wort "des" vorkommt (da kämen natürlich noch mehr hinzu, z.B. "dem", "vom", etc.) und anschließend eben newName entsprechend ausgibt.
Allerdings bekomme ich bei meinen Versuchen anschließend nie einen Namen, geschweigedenn Fehler angezeigt.

Hier mal mein erster Versuch:
Code:
	if not string.find(oldName, "des") == nil then
		local newName = (string.len(oldName) > 20) and string.gsub(oldName, "%s(.[\128-\191]*)%S+%S", " %1. ") or oldName
	else
		local newName = "TEST"
	end
 
Zuletzt bearbeitet von einem Moderator:
Du lokalisiert die Variable in die IF-Abfrage. Ausserhalb kann man sie so nicht benutzen.
Einfach vorher lokalisieren. :-)

Code:
	local newName = "";
	if string.find(oldName, "des") or string.find(oldName, "vom") or ... then
		newName = (string.len(oldName) > 20) and string.gsub(oldName, "%s(.[\128-\191]*)%S+%S", " %1. ") or oldName
	else
		newName = "TEST"
	end
 
Zuletzt bearbeitet von einem Moderator:
Hm, hatte es eigentlich genau so auch probiert Nur habe ich ein einfaches "local newName" genutzt (ohne = "")

Funktioniert jedenfalls wunderbar! Dank dir vielmals!
 
Zurück