Ruby解析字符串和返回数组

xxx*_*xxx 1 ruby string

我有输入字符串 str ="/Users/user/Desktop/task/U6342_Account_20150112.txt"

作为回报,我想要数组 ['U6342','Account','20150112']

为了得到我做的结果

str.split('/')[-1].gsub('.txt','').split('_')
Run Code Online (Sandbox Code Playgroud)

哪个输出 ['U6342','Account','20150112']

现在我的问题 - 有没有更好的解决方案?

cas*_*raf 5

Ruby有类似案例的内置File类.

fname = File.basename(str, '.*') # "U6342_Account_20150112"
fname.split('_') # ["U6342", "Account", "20150112"]
Run Code Online (Sandbox Code Playgroud)

或者,简而言之:

File.basename(str, '.*').split('_')
Run Code Online (Sandbox Code Playgroud)

编辑:第二个参数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
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多http://ruby-doc.org/core-2.2.0/File.html#method-c-basename