Jak oříznout příponu souboru z řetězce v JavaScriptu?

Například za předpokladu, že x = filename.jpg , chci získat filename , kde filename může být libovolný název souboru (Předpokládejme, že název souboru obsahuje pro zjednodušení pouze [a-zA-Z0-9-_].).

Viděl jsem x.substring(0, x.indexOf('.jpg')) na úryvky DZone, ale ne x.substring(0, x.length-4) lepší výkon? Protože, length je vlastnost a neprovádí kontrolu znaků, zatímco indexOf() je funkce a provádí kontrolu znaků.

Odpověď

Pokud znáte délku prodloužení, můžete použít x.slice(0, -4) (kde 4 jsou tři znaky přípony a tečka).

Pokud neznáte délku, @John Hartsock regex by byl správný přístup.

Pokud nechcete používat regulární výrazy, můžete zkusit toto (méně výkonný):

filename.split('.').slice(0, -1).join('.')

Všimněte si, že selže u souborů bez přípony.