2014-01-17 3 views

ответ

11

Точки кода Юникода в исходном файле заменяются фактическим символом, который они представляют. Поскольку '\u0027' для ' (апостроф). Таким образом, ваше возвращение заявление заменяется на:

return s.replace('\u0092','''); 

Примечание:\u0092 также будет заменен управляющим символом.

Итак, второй аргумент является недопустимым символьным символом. Вы можете использовать \' напрямую.

+0

Вы также можете сказать 's.replace ('\ u0092', '\ u005c \ u0027')' !!! Не то, чтобы ты этого хотел. ('\ u005c' - обратная косая черта.) – ajb

+1

Ах, конечно, спасибо –

5

Замена последовательностей юникода - очень ранний шаг процесса компиляции. В частности, это происходит до разбора литералов. Поэтому, когда пришло время разобрать литералы, \u0027 уже был заменен на '. Поэтому после запятой у вас есть ''', о ком компилятор не имеет смысла.

 Смежные вопросы

  • Нет связанных вопросов^_^