furkle определенно получил правильный ответ, но я собираюсь опубликовать альтернативное решение, которое обрабатывает случаи, когда вы не знаете, какие единицы находятся в круглых скобках.
var regexPattern= /^([^\(]*\([^ ]*)()([^\)]*\).*)$/;
while (regexPattern.test(servingSize)) {
servingSize = servingSize.replace(regexPattern, "$1$3");
}
$(".servingSize").html(servingSize);
Узор ломается, как это:
/^
- начать в начале строки
([^\(]*\([^ ]*)
- не захватить все символы вплоть до открывающей скобки, самой скобки, и любого не- пробельные символы, которые сразу же следуют за ним
()
- захватить первый пробел в круглых скобках
([^\)]*\).*)
- не захватить все символы вплоть до закрывающей скобки, сама скобка, и любых символов, которые следуют за ней
$/
- пройти весь путь до конца строки
Проверив его с .test()
метод в цикле while
, он будет запускать цикл, пока он все еще находит пробел внутри круглых скобок. Если он будет запущен, он заменит всю строку всеми символами до совпадающего пространства и всех символов после него.
Как только цикл не находит больше пробелов, он завершает работу и обновляет HTML.
Делая это таким образом, код работает для любых единиц, которые вы могли бы использовать:
- "2 столовые ложки (33 г)" ===> "2 ст.л (33g)"
- " 1 час (360 сек)»===> "1 час (360sec)"
- "1 тонна (2000 фунтов)" ===> "1 тонна (2000lbs)"
Кроме того, это будет даже обрабатывать экстремальные примеры, такие как:
- «2 столовых ложки (3 3 г)» ===> «2 ст.л (33g)»
Заметит, однако, что ОП сказал, что они только хотят, чтобы удалить пробела между скобками, тогда это будет удалить ВСЕ пробелы. –
Да, это не работает. Это дает мне это: 2tbsp (33g) – Tom
Я не думаю, что это проблема .... – epascarello