Избегайте пробела, используя Javascript - PullRequest
1 голос
/ 10 ноября 2009

У меня есть следующее заявление jquery. Я хочу удалить пробел, как показано ниже. Так что, если у меня есть слово, подобное:

Например

  • #Operating/System Я бы хотел конечный результат, чтобы показать мне #Operating\/System. (т.е. с escape-последовательность).


  • Но если у меня есть #Operating/System test, то я хочу показать #Operating\/System + побег последовательность для пространства. .replace(/ /,'') часть неверна но .replace("/","\\/") работает в соответствии с моими требованиями.

Пожалуйста, помогите!

$("#word" + lbl.eq(i).text().replace("/","\\/").replace(/ /,'')).hide();

1 Ответ

2 голосов
/ 10 ноября 2009
$( "#word" + lbl.eq(i).text().replace(/([ /])/g, '\\$1') ).hide();

Соответствует всем пробелам и косым чертам в строке (и сохраняет соответствующий символ в группе $1):

/([ /])/g

замена на

'\\$1'

означает обратную косую черту плюс исходный символ в группе $1.

"#Operating/System test".replace(/([ /])/g, '\\$1');
-->
"#Operating\/System\ test"

Дополнительное преимущество - только один звонок на replace().

РЕДАКТИРОВАТЬ: В соответствии с просьбой OP, краткое объяснение регулярного выражения /([ /])/g. Разбивается следующим образом:

/           # start of regex literal
  (         # start of match group $1 
    [ /]    # a character class (spaces and slashes)
  )         # end of group $1
/g          # end of regex literal + "global" modifier

При использовании с replace(), как указано выше, все пробелы и косые черты заменяются собой, перед которыми ставится обратный слеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...