Я создаю запрос для отправки на поиск, одно из полей ввода - это фильтр для "ИЛИ". Мне нужно заменить пробелы на + OR +.. только в том случае, если пробел встречается вне цитируемого текста. Итак, это логика:
"Счастливые дни" + OR + "Лодка для любви"
У меня есть рабочий код, который будет делать это здесь:
var filter2=$('[name=filter2]').val();
var str2 = jQuery.trim(filter2);
var filter2d = str2.replace(/" "/g, "\"+OR+\"");
Это работает только в том случае, если текст содержит цитаты. Я хотел бы также иметь возможность сделать это:
fonzy + OR + "Счастливые дни" + OR + "Лодка для любви"
Любая помощь приветствуется
Вы тоже можете сделать это.
'"abc def" ghi "klmno pqr"'.match(/"[^"]*"|[^\s]+/g).join("+OR+");
Гвоздь:
var input = '"abc def" ghi "klmno pqr" xyz';
input.replace (/("[^"]*"|\w+)(\s+|$)/g,'$1+OR+').slice (0,-4) ===
'"abc def"+OR+ghi+OR+"klmno pqr"+OR+xyz'
Это предполагает, что ваши цитируемые строки не содержат символов кавычек.
Это должно сделать это...
function replaceWhiteSpace(str)
{
insideAQuote = false;
len = str.length
for (i=0; i < len; i++)
{
if (str.charAt(i) == '"')
{
insideAQuote = !insideAQuote;
}
else if (str.charAt(i) == ' ' && !insideAQuote)
{
str = str.substr(0, i) + "+OR+" + str.substr(i+1);
}
}
alert(str);
}