programing

Ruby에서 파일 경로에서 확장자 없이 파일 이름을 가져오는 방법

goodsources 2023. 5. 31. 15:51
반응형

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

반응형