Java-эквивалент дословных строк C#с помощью @


быстрый вопрос. Существует ли эквивалент @ применительно к строкам в Java:

например я могу сделать @"c:afolderafile" в C# и пусть он игнорирует escape-символы при обработке вместо того, чтобы делать "c:afolderaFile". Есть ли эквивалент Java?

хммм: stackoverflow убегает от меня .. лол. Второй пример должен гласить:

диск c:(двойной слеш)папку(двойной слеш)файл

4 84

4 ответа:

нет. Побег / выделение строки-это ваш единственный выбор.

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

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

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

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

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


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

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

но определенно, использование свойства file separator делает ваши программы более широко используемыми. Это больше работа? Да. Как говорит Ванда Сайкс,"но это того стоит".

В настоящее время он не поддерживается в Java, но может быть доступен в будущих версиях. Там было создано JEP 326: необработанные строковые литералы в 2018/01/23

смотрите прогресс на https://bugs.openjdk.java.net/browse/JDK-8196004

наверное, когда-нибудь вы сможете сделать это с:

`c:\afolder\afile`