Ruby에서 파일 경로에서 확장자 없이 파일 이름을 가져오는 방법
루비의 파일 경로에서 파일 이름을 가져오려면 어떻게 해야 합니까?
예를 들어, 내가 다음과 같은 경로를 가지고 있다면."C:\projects\blah.dll"
그리고 난 그저 "블라"를 원합니다.
있습니까?LastIndexOf
루비에 있는 방법?
시도
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"
require 'pathname'
Pathname.new('/opt/local/bin/ruby').basename
# => #<Pathname:ruby>
Windows 사용자가 된 지 오래되었지만 Windows의 디렉터리 이름 구분 기호에 문제가 없다고 합니다.
확장자를 알 수 없는 경우(/세퍼레이터가 필요함):
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.basename("C:\\projects\\blah.dll", ".*") # => "C:\\projects\\blah"
그러나 특정 확장자 파일의 기본 파일 이름을 가져오려면 다음을 사용해야 합니다.File::extname
그렇지 않으면 안 됩니다.
이 코드를 사용해 보십시오.
사용
File.basename("a/b/d/test.rb", File.extname("a/b/d/test.rb")) #=> "test"
조나단의 대답이 더 좋지만, 당신에게 알려주는 것은.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"
큰따옴표 문자열은 \'s를 이스케이프합니다.
'C:\projects\blah.dll'.split('\\').last
저는 개인적으로 사용하는 것을 선호합니다.Pathname
와 함께.*
path = Pathname.new('/home/motine/myname.dll')
path.basename('.*') # => "myname"
basename
실제로 반환합니다.Pathname
사례.문자열을 강제로 사용하려면 다음을 호출할 수 있습니다.to_s
그 위에
ENV 변수에 액세스할 수 있는 경우scan
이 작은 정규식(마지막 단어, 점, 문자열의 마지막 단어를 찾습니다)과 결합하면 파일의 이름이 'dot'로 들어갑니다.
filename = ENV['SCRIPT_NAME'].scan(/\w+\.\w+$/)
물론, 당신은 사용할 수 있습니다.scan
파일 이름이 포함된 경로 이름의 정규식 및__FILE__
명백한 선택입니다.
__FILE__.scan(/\w+\.\w+$/)
다음을 사용하여 현재 스크립트에 대한 디렉터리 경로를 가져올 수 있습니다.
File.dirname __FILE__
언급URL : https://stackoverflow.com/questions/374326/how-to-get-filename-without-extension-from-file-path-in-ruby
'programing' 카테고리의 다른 글
Flexbox 항목 간의 거리를 설정하려면 어떻게 해야 합니까? (0) | 2023.05.31 |
---|---|
Eclipse 오류: 필요한 .class 파일에서 간접적으로 참조됩니까? (0) | 2023.05.31 |
Ruby로 스위치 문을 작성하는 방법 (0) | 2023.05.31 |
Azure Storage Client 2.0의 다른 BLOB로 한 Azure Blob 복사 (0) | 2023.05.26 |
IIS 7.0에서 "HTTP 오류 500.19 - 내부 서버 오류"를 해결하는 방법 (0) | 2023.05.26 |