Tôi đang tìm kiếm một thời gian ở đây và không tìm thấy những gì tôi cần. Tôi đang học Ruby (1.9) và đang cố gắng làm một cái gì đó cơ bản với một tập tin văn bản. Tôi đang cố gắng sử dụng RegEx để loại bỏ các chữ cái không và khoảng trắng ở đầu dòng, bỏ qua dấu cách giữa các thẻ (tôi đang cố gắng đếm các từ trong tệp, do đó khi tôi muốn khoảng cách giữa các từ còn lại).Loại bỏ các ký tự đặc biệt bằng Ruby, nhưng không phải là dấu cách
Ex:
555 r6ub6y i7s e7a0sy... w1o2w4.
Để thay đổi để:
ruby is easy... wow.
Những gì tôi đã cho đến nay bằng cách sử dụng dòng lệnh để kiểm tra ruby rubyfile.rb < test.txt
:
$stdin.each do |line|
line.chomp!.downcase!
line.gsub!(/[^a-zA-Z]/, "") #this takes away my spaces!
puts line
end
Lưu ý rằng 'chomp!' Sẽ trả lại 'nil' nếu không có thay đổi nào được thực hiện. Đó là hành vi hơi bất ngờ – JKillian
@JKillian "bất ngờ" hoặc "không mong muốn" trong trường hợp này. Các phương thức bang (!) Cho các chuỗi thường trả về nil khi các thay đổi không được áp dụng. Bang ngụ ý một đột biến nguy hiểm hơn của nó giống như phương pháp được đặt tên đôi khi nó làm thay đổi người nhận hoặc theo cách nào đó tạo ra các kết quả khác với phương pháp phi bang. Tôi thấy nó như là! Có nghĩa là nguy hiểm mong đợi một cái gì đó khác nhau. – engineersmnky
@engineersmnky Aye, tôi quen thuộc với các phương pháp bang, và bạn hoàn toàn chính xác mà nhiều cho chuỗi hành xử tương tự như 'chomp'. Cá nhân tôi chỉ thấy kỳ lạ là nói chung chúng không thể bị xâu chuỗi như các phiên bản thông thường ... – JKillian