2014-02-21 4 views
0

У меня есть труба | файл с разделителями Я отправляю и в поле строки клиент использует Pipes как просто случайный символ для разделения точек.о .replace in Velocity

Пример. Это тот текст, который у них есть в поле.

Encore AWD | Leather | Navigation | Sunroof | Back Up Camera | USB | Bluetooth 

Мне нужно заменить | с a - и это код, который я пытаюсь.

#set ($va.list_comment = $va.listing_comment.replace("|", "-")) 

он по-прежнему выводит | персонажи.

У кого-нибудь есть идеи, что я могу делать неправильно здесь?

+0

Если это нормальный Java 'Str ing.replace', то это потому, что он ожидает регулярное выражение, а не строку. Сначала я попытаюсь ускользнуть от специального персонажа и посмотреть, работает ли это. –

+0

['replaceAll'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29) работает с регулярными выражениями, ['replace'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang. CharSequence% 29) заменяет обычные текстовые вхождения. –

ответ

1

Вы не можете назначить новое значение объекту. Если вы используете последнюю версию Velocity, тогда такое задание будет работать , если есть метод setList_comment, или если $va является Map. В противном случае, вы бы просто создать новую переменную, которая будет принимать новое значение и использовать его:

#set ($fixedListing = $va.listing_comment.replace("|", "-")) 
$fixedListing 

Или, если вам не нужно это значение для чего-нибудь еще, чем просто напечатать его один раз, пропустить задание полностью и просто напечатать результат:

$va.listing_comment.replace("|", "-") 

Если это все еще не работает, убедитесь, что значение, возвращенное действительно java.lang.String, а не что-то другое:

$va.listing_comment.class