Ruby의 파일 경로에서 확장자가없는 파일 이름을 얻는 방법
Ruby의 파일 경로에서 파일 이름을 얻는 방법은 무엇입니까?
예를 들어 경로가 "C:\projects\blah.dll"
있고 "blah"를 원하면
거기에 LastIndexOf
루비 방법은?
require 'pathname'
Pathname.new('/opt/local/bin/ruby').basename
# => #<Pathname:ruby>
나는 오랫동안 Windows 사용자가 아니었지만 Pathname rdoc은 Windows의 디렉토리 이름 구분 기호에 문제가 없다고 말합니다.
로컬 파일 시스템에서 사용되는 구분 기호에 관계없이 슬래시 (``/ '')를 사용하여 구성해야하는 file_name에 지정된 파일 이름의 마지막 구성 요소를 반환합니다. file_name 끝에 접미사가 제공되고 존재하면 제거됩니다.
File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb" File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"
귀하의 경우 :
File.basename("C:\\projects\\blah.dll", ".dll") #=> "blah"
확장명을 알 수없는 경우 (/ 구분 기호 필요) :
irb(main):024:0> f = 'C:\foobar\blah.txt'.gsub("\\","/")
=> "C:/foobar/blah.txt"
irb(main):027:0> File.basename(f,File.extname(f))
=> "blah"
Jonathan Lonowski 는 완벽하게 대답했지만 여기에 언급 된 답변이 없습니다. 대신에 File::extname
직접 a '.*'
를 사용 하여 파일 이름을 얻을 수 있습니다 .
File.basename("C:\\projects\\blah.dll", ".*") # => "C:\\projects\\blah"
그러나 특정 확장 파일 의 기본 파일 이름을 얻으려면 을 사용해야합니다 File::extname
. 그렇지 않으면 그렇지 않습니다.
이 코드를 사용해보십시오
사용하다 extname
File.basename("a/b/d/test.rb", File.extname("a/b/d/test.rb")) #=> "test"
Jonathon의 답변이 더 좋지만 알려주 somelist[-1]
는 것은 LastIndexOf
사용 가능한 표기법 중 하나입니다 .
krusty.ar가 somelist.last
분명히 언급했듯이 .
irb(main):003:0* f = 'C:\\path\\file.txt'
irb(main):007:0> f.split('\\')
=> ["C:", "path", "file.txt"]
irb(main):008:0> f.split('\\')[-1]
=> "file.txt"
큰 따옴표 문자열은 \를 이스케이프합니다.
'C:\projects\blah.dll'.split('\\').last
ENV 변수에 액세스 할 수 scan
있는이 작은 정규식 (마지막 한 단어, 점, 문자열의 마지막 단어를 찾는)과 결합하면 파일 이름이 'filename'에 저장됩니다.
filename = ENV['SCRIPT_NAME'].scan(/\w+\.\w+$/)
분명히, scan
파일 이름을 포함하는 경로 이름에 대해 정규식을 사용할 수 __FILE__
있으며 확실한 선택입니다.
__FILE__.scan(/\w+\.\w+$/)
다음을 사용하여 현재 스크립트의 디렉토리 경로를 얻을 수 있습니다.
File.dirname __FILE__
'IT story' 카테고리의 다른 글
UINavigationBar를 투명하게 만들기 (0) | 2020.04.16 |
---|---|
줄 바꿈으로 PHP 문자열을 분해 (0) | 2020.04.16 |
수퍼 타입 목록을 하위 유형 목록으로 캐스트하는 방법은 무엇입니까? (0) | 2020.04.16 |
C ++보다 C ++이 얼마나 빠릅니까? (0) | 2020.04.16 |
iOS 테스트 / 사양 TDD / BDD 및 통합 및 수락 테스트 (0) | 2020.04.16 |