Кто-нибудь может дать мне некоторые объяснения о fprintf ('Как насчет одинарных кавычек (' ')? \ N') в MATLAB? - PullRequest
0 голосов
/ 28 сентября 2018
>> fprintf('How about single quote('')?\n')
How about single quote(')?

вывод совпадает с:

>> fprintf("How about single quote(\')?\n")
How about single quote(')?

, который является более общим для понимания (символ Escape состоит из обратной косой черты '\' и символа (например, 'n'))

Итак, может ли обратная косая черта ('\') быть изменена одной кавычкой (') для обозначения escape-символа в MATLAB?

1 Ответ

0 голосов
/ 28 сентября 2018

Matlab имеет символьных векторов и строк .Это разные типы данных.Векторы символов заключаются в одинарные кавычки ('):

disp('This is a char vector')

, тогда как в строках используются двойные кавычки ("):

disp("Hey, I am a string")

Чтобы ввести одинарную кавычку в символvector, или двойная кавычка в строке, вы дублируете it:

disp('Hey, what''s up?')
disp("Say ""Hi""")

Введение двойной кавычки в символе вектора или одиночной кавычки в строке не представляет проблемы:

disp('She said "yes"')
disp("What's the matter?")

Все это обычно применяется, когда векторы символов или строки используются в качестве аргументов fprintf.Кроме того, Matlab fprintf и sprintf , по-видимому, 1 понимают \' как синоним ' и \" как синоним ";но правила дублирования все еще применяются. 2 Таким образом, они эквивалентны:

fprintf('I don''t like strings\n')
fprintf('I don\''t like strings\n')

, как и эти:

fprintf("""Inconceivable!"", he retorted\n")
fprintf("\""Inconceivable!\"", he retorted\n")

За пределами fprintf или sprintf\' и \" не имеют этих особых значений.Попробуйте

disp('\'' \"')
disp("\' \""")

1 Я не смог найти это документально.
2 Возможно, причина в том, чтобы имитировать C fprintf поведение ;но учтите, что дублирование там не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...