分割文件名称

我有这样的文件的名称: name1.csv ,我想提取这个string的两个子string。 一个将name1存储在一个variables中,另一个存储扩展名csv ,而不在另一个variables中存储点。

我一直在寻找是否有像Java的indexOffunction,允许做这种操作,但我什么也没有find。

任何帮助?

使用strsplit

 R> strsplit("name1.csv", "\\.")[[1]] [1] "name1" "csv" R> 

请注意,您a)需要转义点(因为它是正则expression式的元字符),b)处理strsplit()返回通常只有第一个元素感兴趣的列表。

更一般的解决scheme涉及可以提取匹配的正则expression式。

对于文件名的特殊情况,你也有:

 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" 

请注意,第二个参数是一个正则expression式,这就是为什么你不能通过单点(它将被解释为“任何字符”)。

使用正则expression式,你可以做这个例子

 regmatches(x='name1.csv',gregexpr('[.]','name1.csv'),invert=TRUE) [[1]] [1] "name1" "csv"