Использование strlen с одинарной или двойной кавычкой

Я был бы признателен, если бы кто-нибудь показал мне, как вычислить значение strlen в одинарной и двойной кавычках?

эхо-стрлен('l\n2') ; //4 эхо-стрлен("l\n2"); //3

Спасибо


person user9718914    schedule 03.05.2018    source источник
comment
Пожалуйста, включите ссылку или тег скрипта или языка программирования, применимый к вашему вопросу.   -  person JohnH    schedule 03.05.2018
comment
Ага. @JohnH прав. Разница заключается в строго типизированных и слабо типизированных языках. Дайте ссылку на ваш язык.   -  person Maddy Blacklisted    schedule 03.05.2018
comment
Некоторые языки будут анализировать содержимое строк в двойных кавычках, передавая его прямо внутри одинарных кавычек. \n будет одиночным символом новой строки, а '\n' будет обратной косой чертой и n.   -  person enhzflep    schedule 03.05.2018
comment
Спасибо FDS, Джону, Мэдди и enhzflep. Я включу язык в вопрос в следующий раз.   -  person user9718914    schedule 04.05.2018


Ответы (1)


Одинарные кавычки берут строки буквально. 'l\n2' - это всего 4 символа. (Ну, не совсем верно с двумя последовательными обратными косыми чертами...).

Двойные кавычки оценивают строки, допускающие экранированные символы и синтаксический анализ переменных. Эта оценка выполняется при создании строки перед выполнением функции strlen().

В двойных кавычках "\" является escape-символом. Это приводит к тому, что "\n" оценивается как перевод строки (LF), который является одним символом ASCII. Это делает "l\n2" строкой из 3 символов: "l", LF и "2".

person FDS    schedule 03.05.2018