Używanie Globa z katalogami
Imgorthand / Getty Images
' Globbing ' pliki (z Dir.glob ) w Ruby pozwala wybrać tylko te pliki, które chcesz, takie jak wszystkie pliki XML, w danym katalogu. Nawet jeśli dir.blog jest tak jak wyrażeń regularnych, tak nie jest. Jest bardzo ograniczony w porównaniu do Rubin wyrażeń regularnych i jest ściślej powiązany z symbolami wieloznacznymi rozszerzeń powłoki.
Przeciwieństwem globbingu, iteracji po wszystkich plikach w katalogu, można dokonać za pomocą Kier.foreach metoda.
Przykład
Poniższy glob będzie pasował do wszystkich plików kończących się na .rb w bieżący katalog . Używa pojedynczego symbolu wieloznacznego, gwiazdki. Gwiazdka dopasuje zero lub więcej znaków, więc każdy plik kończący się na .rb będzie pasować do tego globu, w tym pliku o nazwie po prostu .rb , bez wartości przed rozszerzeniem pliku i poprzedzającym go okresem. Metoda glob zwróci wszystkie pliki, które pasują do reguł globowania jako tablicę, którą można zapisać do późniejszego użycia lub iterować.
|_+_||_+_||_+_|
|_+_|
|_+_|
|_+_|
Symbole wieloznaczne i nie tylko
Do nauczenia się jest tylko kilka symboli wieloznacznych:
Jedną rzeczą do rozważenia jest rozróżnianie wielkości liter . Od systemu operacyjnego zależy, czy TEST.txt oraz Test.TxT odnoszą się do tego samego pliku. W systemie Linux i innych systemach są to różne pliki. W systemie Windows będą one odnosić się do tego samego pliku.
System operacyjny odpowiada również za kolejność wyświetlania wyników. Może się różnić, jeśli korzystasz z systemu Windows, w porównaniu z Linux , na przykład.
Ostatnią rzeczą, na którą należy zwrócić uwagę, jest Dir[ciąg znaków] metoda wygody. To jest funkcjonalnie to samo, co Dir.glob(string) i jest również poprawny semantycznie (indeksujesz katalog, podobnie jak tablica). Z tego powodu możesz zobaczyć ty[] częściej niż Dir.glob , ale są tym samym.
Przykłady używania symboli wieloznacznych
Poniższy przykładowy program zademonstruje jak najwięcej wzorców w wielu różnych kombinacjach.
|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|