Я пытаюсь заменить пробелы в строке запятой. Строка выглядит так
'1529954897.543 GET 200 173481 174274 "https://www.facebook.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/67.0.3391.0 Safari/537.36" "-" 1 0'
Теперь проблема в том, что когда я заменяю все пробелы, они также заменяют пробелы в подстроке «Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, например, Gecko) HeadlessChrome / 67.0.3391.0 Safari / 537.36».
Есть ли способ не заменить пробелы в строке внутри строки?
Ожидаемый результат:
'1529954897.543,GET,200,173481,174274,"https://www.facebook.com/","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/67.0.3391.0 Safari/537.36","-",1,0'
Я думаю, что тогда строки URL и пользовательского агента должны содержать + вместо пробелов.
Вы что-то говорили о вкладках?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать некоторую логику split / join только для замены пробелов вне "..":
const input = '1529954897.543 GET 200 173481 174274 "https://www.facebook.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/67.0.3391.0 Safari/537.36" "-" 1 0'
let result = input.split(`"`)
.map((part, i) => i % 2 ?
part :
part.split(" ").join(",")
).join(`"`)
console.info(result)@getOffMyLawn спасибо за фрагмент :) (кстати, ты был третьим, кто сделал это с моими ответами сегодня ..)
Н.П .: Я на работе доска и все ... Надо что-то делать :)
Вы можете разбирать его по буквам. Вот наивная реализация:
function parsestr(str) {
var tokens = [], i, ch, token = "", in_quote = false;
for (i = 0; i < str.length; i++) {
var ch = str.charAt(i);
if (ch === '"') {
in_quote = !in_quote;
} else if (ch === ' ' && in_quote === false) {
tokens.push(token);
token = "";
} else {
token += ch;
}
}
if (token) {
tokens.push(token);
}
return tokens;
}
var str = '1529954897.543 GET 200 173481 174274 "https://www.facebook.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/67.0.3391.0 Safari/537.36" "-" 1 0'
console.info(parsestr(str));
Да, я знаю, и я знал