2012-03-31 22 views
11

Tất cả các chuỗi xóa của tôi với gsub sử dụng regex, có cách nào ngắn hơn không? string.gsub(/\A.*\//,'')Có Regex Delete trong Ruby không?

+3

Ba ký tự đó thực sự mang lại cho bạn? –

+0

lol dường như đang thực hiện rất nhiều lần xóa chuỗi. Nhưng làm điều đó thông qua gsub, có vẻ như tôi đang làm điều đó sai. Nó nên được thực hiện thông qua string.delete, không? –

+0

string.delete chỉ mất những ký tự cần xóa, không có regexp. string.slice! có thể được sử dụng để loại bỏ một phần của một chuỗi dựa trên một regexp nhưng dài hơn sau đó gsub ... – Pafjo

Trả lời

5

Một cách là để thêm các phương pháp ngắn của riêng bạn:

class String 

    def del(regexp) 
    gsub(regexp,'') 
    end 

    def del!(regexp) 
    gsub!(regexp,'') 
    end 

end 

Thông thường mã này sẽ đi trong một lib/thư mục, ví dụ lib/chuỗi extensions.rb

Heads lên rằng một số lập trình viên thực sự không thích điều này bởi vì nó là bản vá lỗi của khỉ. Cá nhân tôi thích nó cho các dự án vì nó làm cho mã dễ hiểu hơn - một khi tôi có phương thức "del", tôi có thể nhanh chóng thấy rằng các cuộc gọi đến nó chỉ xóa regexp.

+0

+1, mặc dù tôi ngạc nhiên không ai bỏ phiếu này. –

3

Tôi không nghĩ vậy.

Chuỗi :: xóa xóa các ký tự và không khớp với regex, đây là một cách tiếp cận hoàn toàn khác.

Cách duy nhất tôi có thể nghĩ rằng làm cho dòng đó của bạn "ngắn hơn" là sử dụng string.gsub!(/\A.*\//,'') (thông báo ở đó).

Đó là con đường để đi, tôi nghĩ :)

+0

@Vache haha, phải. sửa chữa nó: P – Castilho

5

Bạn thay vì có thể chỉ định một phần của chuỗi bạn muốn giữ. . .

string[/[^\/]*$/] 
Các vấn đề liên quan