Java, эквивалентный из дословных строк C# с

Быстрый вопрос. Есть ли эквивалент в применении к строкам в Java:

Например, я могу сделать @"c:\afolder\afile" в C# и имеют его, игнорируют символы ESC при обработке вместо того, чтобы иметь необходимость сделать "c:\\afolder\\aFile". Существует ли эквивалентный Java?

хм: stackoverflow выходит на мне.. lol. Второй пример должен читать:

c: (двойная обратная косая черта) afolder (двойная обратная косая черта) aFile

100
задан falstro 20 April 2010 в 09:54
поделиться

3 ответа

. Ваш единственный выбор - экранирование / экстернализация строки.

73
ответ дан 24 November 2019 в 04:54
поделиться

Как сказали Кент и Джон, нет.

Я отвечаю только для того, чтобы указать, что даже если бы это было, для вашего конкретного случая, это было бы плохой идеей в общем случае, если бы предполагалось, что программа будет более чем разовой.

Java-программы работают не только на Windows, но и на других платформах, у которых другие разделители файлов. Таким образом, вместо того, чтобы иметь дело с экранированными обратными косыми чертами, правильный способ обработки вашего конкретного примера - получить свойство разделителя файлов:


    String sep = System.getProperty("file.separator");
    String filename = ROOTDIR + sep + "folder" + sep + "afile";

Где вы бы отдельно создали ROOTDIR на основе какой-либо политики - не только платформы, но и того, хотите ли вы "файл" должен относиться к фактическому корню файловой системы или к домашнему каталогу пользователя.

Но, безусловно, использование свойства разделителя файлов делает ваши программы более удобными. Это больше работы? да. Как говорит Ванда Сайкс: «Но оно того стоит».

15
ответ дан 24 November 2019 в 04:54
поделиться

Нет, в Java нет дословных строковых литералов.

Если вам нужен Java-подобный (и основанный на Java-VM) язык, который имеет, то вам стоит обратить внимание на Groovy, который имеет различные формы строковых литералов.

31
ответ дан 24 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: