Я борюсь с Regex, чтобы заменить имя переменной внутри строки ...
Мне нужно поместить определенное имя переменной вне кавычек, и, , если эта переменная иметь спецификатор (например, свойство или метод), этот классификатор также должен быть вне кавычек в итоговой строке.
Итак, учитывая этот пример:
cExp = new RegExp('oErro', 'g');
cMsg = "Error ocurred: oErro; please try again";
cMsg.replace(cExp, '\' + oErro + \'')
вывод точно что я ожидаю:
'Произошла ошибка:' + oErro + '; пожалуйста, попробуйте еще раз '
Я ищу, как включить любые слова после имени переменной, и в итоге получился следующий фрагмент кода:
cExp = new RegExp('oErro(\.[^\ |^\;|^\,|^\)|^\}]*)', 'g');
cMsg = "Error ocurred: oErro.message; please try again";
cMsg.replace(cExp, '\' + oErro$1 + \'')
, и результат в точности соответствует тому, что я Ожидается увидеть:
'Произошла ошибка:' + oErro.message + '; пожалуйста, попробуйте еще раз '
Пока все хорошо. Но если я смешиваю имя переменной с variable.qualifier, все начинает запутываться:
cExp = new RegExp('oErro(\.[^\ |^\;|^\,|^\)|^\}]*)', 'g');
cMsg = "Error ocurred: oErro.message (complete message: oErro)";
cMsg.replace(cExp, '\' + oErro$1 + \'')
Я получаю этот вывод
'Произошла ошибка:' + oErro.message + '(полное сообщение:' + oErro) + ''
, пока я ожидал этого вывода (обратите внимание на круглые скобки ВНУТРИ кавычек)
'Произошла ошибка:' + oErro.message + '(полное сообщение:' + oErro + ')'
Другими словами, каждый раз, когда "oErro" используется без квалификатора , выражение получает следующее слово и соединяется с oErro вне заключающих в кавычки слов.
Конечно, я делаю что-то не так, но я не очень знаком с RegExp и, возможно, не ищу правильные термины, чтобы получить соответствующие help.
Мне нужно выражение, которое работает для обоих сценариев ios (удаление слова «oErro» или синтаксиса «oErro.something» из кавычек в последней строке) ...
Заранее спасибо и извините за плохой английский sh, я стараюсь привести несколько примеров б Не стесняйтесь спрашивать, нужно ли вам больше информации о том, чего мне нужно достичь.