2015-08-21 2 views
1

Я использую StringBuidler в Java для создания HTML-страницы.Escape quote при использовании StringBuilder

Я хочу знать, как избежать всех котировок (") без размещения «\» каждый раз? Например, каждый раз, когда я добавить строку, как это:

StringBuilder a ; 
a.append(<div id = \"Name\" ...>) 

Я хочу написать прямо:

a.append(<div id = "Name" ..> 

Спасибо.

+5

Вы не можете. В String мы избегаем '' 'только с' '' ''. Возможно, используйте '' 'для описания значений атрибутов вместо' '' like 'append (" ");'. – Pshemo

+0

Я уверен, что нет никакого способа сделать это. –

ответ

6

Короткий ответ: Там нет никакого способа обойти это в Java

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

Но если они действительно раздражают вас вы можете применить некоторые хитрости:

  1. положить строк в текстовом файле и читать их оттуда.

  2. использовать символ вместо символа кавычки и использовать замену для ввода правильных котировок. Конечно, ваш символ замены не должен появляться нигде в строке.

  3. Напишите этот код на другом языке программирования, таком как Groovy, который имеет разные способы разграничения строк.

Поскольку вы, кажется, генерируете HTML: используйте правильный механизм шаблонов, который действительно является вариантом 1 на стероидах.

+0

Благодарим вас за использование подходящего шаблонизатора. То, что делает OP, - это не лучшая практика. – Neil

2

При создании HTML-шаблона самым простым решением является использование текстового файла.

Вы можете сделать это, как

  • простой текстовый файл, в котором заменить метки() с кодом вы хотите изменить
  • использовать файл свойств для разделов текста в инлайн.
  • используйте библиотеку, которая содержит бесплатный API для генерации HTML.
  • скорость использования, чтобы произвести замену.
  • используйте один из других форматов веб-страниц, таких как JSP.

Однако, нет никакого способа, чтобы избежать побега "в Java коде. Единственная альтернатива использовать другой символ, как (Alt-Graphic-B), который вы заменить в конце.

1

Вы можете «т, что лишь одна из причин, почему это плохая идея, чтобы заполнить StringBuilder с HTML-кодом вручную.

+2

Мы не можем использовать '\ u0022'. Компилятор Java по-прежнему будет интерпретировать его как '' 'и будет хотеть избежать его, но мы не сможем это сделать, так как, написав' \\ u0022', мы избегаем только символа '' ''. – Pshemo

+0

@Pshemo You ' re right, Java сначала выполняет парсинг. – Kayaman

0

она существует в другом языке, чем Java, но с Java не представляется возможным.

с coffescript, вы можете, например:

html = """ 
     <div id="Name" > ... </div> 
     """ 
+0

Groovy делает это также. – Neil

0

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

В идеале, вы должны загружать данные из файла, если хотите получить необработанную строку.

Смежные вопросы