Nahraďte opakované znaky JavaScriptem

S adresami URL může být obtížné pracovat, protože mohou být komplikovanější než tradiční formát adresy URL, který zadáváte. Znovu jsem si to připomněl, když jsem analyzoval adresy URL Webpack, když jsem viděl tuto krásu:

webpack-internal:///../rbd/pnpm-volume/144384a5-85d9-4142-b9b9-168eea22eb97/node_modules/.registry.npmjs.org/fbjs/0.8.17/node_modules/fbjs/lib/isNode.js

Adresu jsem analyzoval pomocí new URL("....") ale viděl jsem, že pathname obsahovalo každé úvodní lomítko:

///../rbd/pnpm-volume/144384a5-85d9-4142-b9b9-168eea22eb97/node_modules/.registry.npmjs.org/fbjs/0.8.17/node_modules/fbjs/lib/isNode.js


Protože jsem chtěl zobrazit rozumný název cesty, chtěl jsem zjistit, jak odstranit/nahradit opakované znaky pomocí JavaScriptu. Ve skutečnosti to bylo jednodušší, než jsem si myslel, že to bude:

const prettyPath = urlObj.pathname.replace(/\/{2,}/g, "/");

// > /../rbd/pnpm-volume/144384a5-85d9-4142-b9b9-168eea22eb97/node_modules/.registry.npmjs.org/fbjs/0.8.17/node_modules/fbjs/lib/isNode.js

{2,} část regulárního výrazu umožňuje pouze jeden z opakujících se znaků a /g zajišťuje, že u více instancí v řetězci bude odstraněn znak opakování.

Právě když jsem si myslel, že jsem to všechno viděl, tato adresa URL webového balíčku mě překvapila. Naštěstí mi malý regulární výraz umožnil zobrazit uživateli hezkou adresu URL na stránce!