我输入字符串str ="/Users/user/Desktop/task/U6342_Account_20150112.txt"
作为回报我想要数组['U6342','Account','20150112']
为了得到我做的结果
str.split('/')[-1].gsub('.txt','').split('_')
输出['U6342','Account','20150112']
现在我的问题 - 有没有更好的解决方案?
答案 0 :(得分:5)
Ruby有类似案例的内置File类。
fname = File.basename(str, '.*') # "U6342_Account_20150112"
fname.split('_') # ["U6342", "Account", "20150112"]
或者,简而言之:
File.basename(str, '.*').split('_')
编辑: basename
中的第二个参数告诉函数该文件的后缀是什么。它支持*
通配符以匹配任何后缀,然后将其从结果中删除。例子:
File.basename(str, '.*') # "U6342_Account_20150112"
File.basename(str, '.txt') # "U6342_Account_20150112"
File.basename(str, '.jpg') # "U6342_Account_20150112.txt" => suffix not removed
在此处阅读更多http://ruby-doc.org/core-2.2.0/File.html#method-c-basename