Für ein aktuelles Projekt brauchte ich eine RegExp, um großgeschriebene Wörter aus einem Titel zu filtern. Dabei sollten aber auch sog. common words, also Wörter die oft benutzt werden und keine Bedeutung haben, berücksichtigt und gelöscht werden.
Konkret sieht das so aus:
Input-String:
Der DHT22 am D1 Mini - Temperatur und Luftfeuchtigkeit messen - Tutorial
Output-String:
dht22-d1-mini-temperatur-luftfeuchtigkeit
Ich dachte mir ich teile kurz und knackig meine kleine Funktion, da ich das in Zukunft wahrscheinlich des Öfteren nochmal brauchen werde. Außerdem gibt es unter euch vielleicht auch den ein oder anderen, der es mal gebrauchen könnte. 🙂
Die Funktion sieht wie folgt aus:
function generateDiscordTitle(title){
var regexRule = /\b[A-Z][A-Za-z0-9]*\b/g;
var inputString = title;
var commonWords = ["der", "die", "das", "tutorial"];
var generatedTags = inputString.match(regexRule, inputString);
var topicTitle = [];
generatedTags.forEach(function(item){
var itemLowercased = item.toLowerCase();
var itemIsCommonWord = commonWords.includes(itemLowercased);
if(!itemIsCommonWord){
topicTitle.push(itemLowercased);
}
});
return topicTitle.join('-');
}
Anwendung
var topicTitle = generateDiscordTitle("Der DHT22 am D1 Mini - Temperatur und Luftfeuchtigkeit messen - Tutorial");
console.log(topicTitle);
dht22-d1-mini-temperatur-luftfeuchtigkeit
Die Liste der common words ist sehr überschaubar
var commonWords = ["der", "die", "das", "tutorial"];
… und kann natürlich nach Belieben erweitert oder auch aus einer Datei ausgelesen werden.