Java: игнорировать escape-последовательности
Для моих интерфейсов командной строки часто приятно иметь немного ASCII-графики в начале, но они часто содержат много обратной косой черты.
например:
System.out.println(" _____ _______ _____ _ __ ");
System.out.println(" / ____|__ __|/\ / ____| |/ / ");
System.out.println("| (___ | | / \ | | | ' / ");
System.out.println(" \___ \ | | / /\ \| | | < ");
System.out.println(" ____) | | |/ ____ \ |____| . \ ");
System.out.println("|_____/ |_/_/ \_\_____|_|\_\ ");
Но так как каждое "\" должно быть "\\", это часто выглядит очень некрасиво в коде, и очень трудно найти / исправить ошибку в "шрифте". Есть ли способ сказать Java НЕ использовать escape-последовательности?
5 ответов
Нет, у Java нет ничего похожего на "дословные строковые литералы" C#. Если вы хотите сделать ASCII-изображение, попробуйте вместо этого поместить его в текстовый файл и загрузить его из кода.
Ненавижу заглядывать в эту ветку, но для всех, кто ищет это... Попробуйте использовать юникод!
Например: \u0092 = "\"
Прочитайте это "изображение" из файла, этот файл может быть в вашей библиотеке jar:)
Возможно, немного поздно, но это для тех, кто все еще ищет решение;
Pattern.quote()
может использоваться для игнорирования escape-последовательностей.
System.out.println(Pattern.quote("| | ____ | | ______ "))
System.out.println(Pattern.quote("| | | | | / \ "))
System.out.println(Pattern.quote("|_____| |__ | | | | "))
System.out.println(Pattern.quote("| | | | | | | "))
System.out.println(Pattern.quote("| | |_____ |_____ |_____ \______/ "))
//I apologize for the rushed textblock
Следует отметить, что escape-последовательности \Q и \E будут находиться в начале и конце вашей строки.