2012-09-18 10 views
7

przepraszam, jeśli gofrować lub mówić trochę jibberish, ale jestem nowy w prędkości, a te fora!Wyjściowa część struny o prędkości

Potrzebuję sprawdzić zawartość napisu dla określonego znaku i wypisać drugą część tekstu, jeśli się pojawi. Na przykład:

set ($string = "This is a long string *** but I only want to output this on my email"). 

Chcę wydrukować cały tekst po 3 gwiazdkach. Przeszukałem fora, ale nie mogę znaleźć niczego, co pomoże mi całkowicie.

Odpowiedz

20

Prędkość jest tylko fasadą dla rzeczywistych obiektów Java, więc masz dostęp do wszystkich public methods of the String class, w tym indexOf i substring. Więc spróbuj coś takiego:

#set ($string = "This is a long string *** but I only want to output this on my email") 
#set ($index = $string.indexOf('***')) 
#set ($index = $index + 3) 
#set ($end = $string.substring($index)) 

Jeśli masz większą kontrolę nad tym, jakie obiekty można umieścić w kontekście można dodać instancję StringUtils jako narzędzia pomocniczego, a następnie użyj substringAfter bezpośrednio.

+0

Dzięki Sergiu to świetna pomoc. Oryginalny łańcuch będzie wolnym polem wprowadzania, ale mogę poprosić użytkownika o użycie *** przed tekstem, który chce wyświetlić. Alternatywnie, jeśli użytkownik uruchomiłby tekst wyjściowy w linii 5 pola formatu swobodnego, mógłbym teoretycznie utworzyć tablicę i wyprowadzić element piąty dalej. czy to możliwe? Próbowałem używać powrotu karetki jako podziału dla każdego elementu tablicy, ale nie mogę tego zrobić. Jakieś pomysły? Jeśli nie, powyższe rozwiązanie będzie działać świetnie. – user1680260

+0

Powinien działać z '$ string.split ('\ n')' w Velocity 1.7, chociaż nie jestem pewien co do poprzednich wersji. –

+0

Dzięki Sergiu Dumitriu. Mogłem użyć wszystkich publicznych metod klasy String po $ myVariable = $ myVariable.toString() –