2013-07-30 46 views
6

Tôi đang cố gắng tìm một hàm sẽ trích xuất các ký tự ở một vị trí nhất định trong một chuỗi. Ví dụ: tôi có tên tệp dài với ngày trong đó và tôi muốn kết thúc chỉ với ngày:Trích xuất các ký tự ở vị trí đã đặt

'LT50420331984221PAC00_B7.tif' 

và tôi chỉ muốn phần '1984221'. Tôi đã đưa ra một chức năng phức tạp, nhưng đã tự hỏi liệu có một giải pháp thanh lịch hơn hay không.

+0

Tôi không thấy làm cách nào để có thể trả lời bằng thông tin được cung cấp. Phần ngày: luôn bắt đầu sau ký tự 'n'? Luôn bắt đầu bằng '19XX' hoặc' 20XX'? Luôn chạy cho các ký tự 'n'? Bạn có thể cung cấp thêm bất kỳ thông tin nào để làm cho câu trả lời này dễ dàng hơn không? – thelatemail

+0

Bạn có thể thêm giải pháp của mình cho OP được không? – agstudy

+0

Mọi thứ được giải thích trong wiki lập trình R: http://en.wikibooks.org/wiki/R_Programming/Text_Processing – PAC

Trả lời

13

Nếu bạn biết vị trí chính xác của các ngày trong chuỗi của bạn, bạn có thể sử dụng

substr('LT50420331984221PAC00_B7.tif', 10, 16) 
+1

Nếu phần ngày _always_ ở cùng vị trí, đây là những gì tôi muốn sử dụng. – Jesse

3

Ví dụ:

gsub('(.*)([0-9]+{7})[A-Z].*','\\2','LT50420331984221PAC00_B7.tif') 
"1984221" 

Ở đây tôi giả định rằng ngày là 7 chữ số trước khi một bức thư vốn.

+0

nếu bạn giả định độ dài của chuỗi, thì lợi thế của việc sử dụng 'sub' trên' substr' là gì? –

+1

@RicardoSaporta Tôi không giả sử chiều dài của chuỗi. Độ dài là độ dài của một ngày ở định dạng nhất định. Tôi giả định vị trí của ngày này. – agstudy

+0

có, chúng tôi đang nói những điều tương tự, chỉ cần sử dụng các điều khoản khác nhau. Tôi đã tự hỏi những gì bạn nhận được từ việc sử dụng 'sub' trong bối cảnh cụ thể này mà bạn không thể có từ việc sử dụng' substr'? –

Các vấn đề liên quan