2012-03-30 10 views
8

Muszę wiedzieć, czy sprawdzić, czy String zakończył się czymś w rodzaju .xyz plus dowolne znaki po nim.Sprawdzanie, czy String kończy się czymś z Javą (Regex)

Jak to:

myString.endsWidth(".css*") 

Jednak to nie przechodzi moje if-oświadczenie. Jednym konkretnym przykładem jest ten rodzaj ciągu: style.css?v=a1b23

Jakieś pomysły?

Kompletny przykład String:

http://xyz.com//static/css/style.css?v=e9b34 
+2

endswith nie używać wyrażeń regularnych. – claesv

Odpowiedz

12

hum, jestem zgadywania coś takiego jest jeszcze lepiej:

return myString.indexOf(".css")>-1; 

Jeśli naprawdę chcesz iść z regexp, można użyć tego

return myString.matches(".*?\\.css.*"); 
+0

Próbowałem ". *? \\. Css. *", Ale nadal nie działa ... – xybrek

+1

Po prostu wypróbowane: "style.css? V = a1b23" .matches (". *? \\. Css. *") i zwraca "true", więc musisz mieć inny problem gdzieś –

2

Użyj ".*\.css.+" jako zwykłego e xpression.

+0

Nie jestem pewien, gdzie to też nie działa? Kompletny ciąg byłby podobny do: http://xyz.com//static/css/style.css?v=e9b34 – xybrek

+0

Czy rozważałeś odpowiedź Erica? Musisz użyć 'match (String)', a nie 'endsWith (String)'. Zaktualizowano wyrażenie przy okazji. –

3

endsWith pobiera ciąg jako parametr

matches trwa wyrażenia regularnego

0

użycie \.(.{3})(.*) czym pierwsza grupa ($ 1) zawiera trzy znaki po . a druga grupa $ 2 zawiera resztę napisu po te trzy postacie. Dodać znak $ na końcu wyrazu, aby wyglądać tylko dla ciągów kończących się na tym połączeniu

0

Spróbować regex:

Pattern p = Pattern.compile(".*\.css.*"); 
Matcher m = p.matcher("mystring"); 
if (m.matches()) { 
    // do your stuff 
} 
Powiązane problemy