将文件名拆分为名称,扩展名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文件名拆分为名称,扩展名相关的知识,希望对你有一定的参考价值。
我有这样一个文件的名称:name1.csv
,我想提取这个字符串的两个子串。一个将name1
存储在一个变量中,另一个存储扩展名csv
,而没有另一个变量中的点。
我一直在寻找是否有像Java的indexOf
这样的函数可以进行那种操作,但我还没有找到任何东西。
有帮助吗?
答案
使用strsplit
:
R> strsplit("name1.csv", "\.")[[1]]
[1] "name1" "csv"
R>
请注意,a)需要转义点(因为它是正则表达式的元字符)和b)处理strsplit()
返回通常只有第一个元素感兴趣的列表这一事实。
更通用的解决方案涉及正则表达式,您可以在其中提取匹配项。
对于文件名的特殊情况,您还有:
R> library(tools) # unless already loaded, comes with base R
R> file_ext("name1.csv")
[1] "csv"
R>
和
R> file_path_sans_ext("name1.csv")
[1] "name1"
R>
因为这些是如此常见的任务(参见shell中的basename
等)。
另一答案
使用strsplit()
:
http://stat.ethz.ch/R-manual/R-devel/library/base/html/strsplit.html
例:
> strsplit('name1.csv', '[.]')[[1]]
[1] "name1" "csv"
请注意,第二个参数是正则表达式,这就是为什么你不能只传递单个点(它将被解释为“任何字符”)。
另一答案
使用正则表达式,您可以执行此操作
regmatches(x='name1.csv',gregexpr('[.]','name1.csv'),invert=TRUE)
[[1]]
[1] "name1" "csv"
以上是关于将文件名拆分为名称,扩展名的主要内容,如果未能解决你的问题,请参考以下文章