При попытке обработать строку, с которой я сталкиваюсь
Error: SyntaxError: Unexpected EOF
Я не могу контролировать, как генерируется строка. Мне удалось изолировать проблемный символ (символы) с помощью дихотомии с помощью substring()
, однако он не печатается ни с помощью console.info()
, ни с помощью JSON.parse()
: я получаю
> console.info(c);
""
> JSON.parse(c);
""
все же
> c.length;
1
Все, что я знаю, это то, что за ним следует \n
.
Как я могу определить его и избавиться от него?
> console.info(encodeURIComponent(c));
%E2%80%A8
@ p.s.w.g Ошибка выдается кодом PhantomJS на платформе Apify.
Попробуйте обрезать ввод: JSON.parse(c.trim())
@GetOffMyLawn trim()
действительно удаляет символ, но, поскольку он находится в середине строки, я не могу его использовать.
Кстати, это символ LINE SEPARATOR
(U+2028), закодированный в UTF-8, а затем закодированный в URI. Этот является считается пробел в Unicode, поэтому должен будет в порядке, но, возможно, PhantomJS использует другое определение пробела.
Предполагая, что это единственный проблемный символ, и поскольку его процентное кодирование было определено, решение состоит в том, чтобы заменить декодированную строку процентного кодирования :
> c.length;
1
> let badchar = decodeURI("%E2%80%A8");
> let regex = new RegExp(badchar, "g");
> newc = c.replace(regex, "");
> newc.length;
0
Или если по какой-то причине RegExp
недоступен :
> newc = c.split(badchar).join("")
Какой код дает вам эту ошибку?