2012-03-30 27 views
8

Tôi cần phải biết liệu có kiểm tra xem chuỗi có kết thúc bằng một cái gì đó như .xyz cộng với bất kỳ ký tự nào sau đó không.Kiểm tra xem chuỗi có kết thúc bằng một cái gì đó với Java (Regex)

Như thế này:

myString.endsWidth(".css*") 

Tuy nhiên điều này không vượt qua lệnh if-tôi. Một ví dụ cụ thể là loại chuỗi này: style.css?v=a1b23

Bất kỳ ý tưởng nào?

Hoàn dụ String:

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

endsWith không sử dụng biểu thức thông thường. – claesv

Trả lời

12

hum, tôi đoán một cái gì đó như thế này thậm chí còn tốt hơn:

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

Nếu bạn thực sự muốn đi với regexp, bạn có thể sử dụng

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

Tôi đã thử ". *? \\. Css. *" Nhưng vẫn không hoạt động ... – xybrek

+1

Chỉ cần thử: "style.css? V = a1b23" .matches (". *? \\. Css. *") và nó trả về 'true' vì vậy bạn phải có một vấn đề khác ở đâu đó –

2

Sử dụng ".*\.css.+" làm e thường xuyên của bạn xpression.

+0

Tôi không chắc chắn nơi này không hoạt động quá? Chuỗi hoàn chỉnh sẽ giống như sau: http://xyz.com//static/css/style.css?v=e9b34 – xybrek

+0

Bạn có cân nhắc câu trả lời của Eric không? Bạn cần sử dụng 'match (String)', không phải 'endsWith (String)'. Cập nhật biểu thức bằng cách này. –

3

endsWith mất một chuỗi như tham số

matches mất một biểu thức chính quy

0

sử dụng \.(.{3})(.*) sau đó nhóm đầu tiên ($ 1) chứa ba nhân vật sau . và nhóm thứ hai $ 2 chứa phần còn lại của chuỗi sau ba nhân vật đó. Thêm một dấu $ vào cuối của biểu thức để làm cho nó chỉ tìm kiếm chuỗi kết thúc với sự kết hợp đó

0

Hãy thử một số regex:

Pattern p = Pattern.compile(".*\.css.*"); 
Matcher m = p.matcher("mystring"); 
if (m.matches()) { 
    // do your stuff 
} 
Các vấn đề liên quan