Home > Mobile >  Cleaning string using Regex
Cleaning string using Regex

Time:09-09

I want to remove a specific word from a string using Regex and JavaScript. I have strings like below

Zoe-Clean-1-1024x678
Zoe-Clean-1-150x150
Zoe-Clean-1-1536x1017
Zoe-Clean-1-1700x1126
Zoe-Clean-1-2048x1356
Zoe-Clean-1-300x199
Zoe-Clean-1-768x509
Zoe-Clean-1-900x596
Zoe-Clean-1-scaled
Zoe-Clean-1
zoko-150x150
zoko-300x300
Zoo-Studio-Logo-for-Pay-150x150
Zoo-Studio-Logo-for-Pay-300x300
Zoo-Studio-Logo-for-Pay-768x768
Zoo-Studio-Logo-for-Pay

I want to remove the Logo, for, Pay, scaled word, resolution size 150x150, 300x300, etc., and remove the dash character -. So I expect I can only get the main name.

Zoe-Clean-1 -> Zoe Clean
Zoe-Clean-1-scaled -> Zoe Clean
Zoe-Clean-1-300x199 -> Zoe Clean
Zoo-Studio-Logo-for-Pay -> Zoo Studio
Zoo-Studio-Logo-for-Pay-768x768 -> Zoo Studio

Currently, I'm using this code name.replace(/\b(Logo|for|Pay)\b/gm, ""), I don't know how to remove the dash and resolution size.

CodePudding user response:

name = name.replace(/(Logo|for|Pay|[0-9] x[0-9] |-[0-9] [-|$|\s])/gm, "") ;
name = name.replace(/-/gm, " ") ;
name = name.trim() ;

First, remove all we don't want : [0-9] x[0-9] match the resolution size, -[0-9] [-|$|\s] match number with à dash before and a dash after or à line break/line end. Then you replace all the - by space : name.replace(/-/gm, " "). So you just have to trim() the string !

CodePudding user response:

You can use

name = name.replace(/-Logo-for-Pay|-\d.*/g, '')

See the regex demo

Details:

  • -Logo-for-Pay - a fixed substring
  • | - or
  • -\d.* - a hyphen, a digit and then the rest of the line.
  • Related