Splitting a file name into name,extension

前端 未结 3 1056
南笙
南笙 2020-11-29 04:32

I have the name of a file like this: name1.csv and I would like to extract two substrings of this string. One that stores the name1 in one variable

相关标签:
3条回答
  • 2020-11-29 05:02

    Using regular expression, you can do this for example

    regmatches(x='name1.csv',gregexpr('[.]','name1.csv'),invert=TRUE)
    [[1]]
    [1] "name1" "csv"  
    
    0 讨论(0)
  • 2020-11-29 05:03

    Use strsplit():

    http://stat.ethz.ch/R-manual/R-devel/library/base/html/strsplit.html

    Example:

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

    Note that second argument is a regular expression, that's why you can't just pass single dot (it will be interpreted as "any character").

    0 讨论(0)
  • 2020-11-29 05:12

    Use strsplit:

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

    Note that you a) need to escape the dot (as it is a metacharacter for regular expressions) and b) deal with the fact that strsplit() returns a list of which typically only the first element is of interest.

    A more general solution involves regular expressions where you can extract the matches.

    For the special case of filenames you also have:

    R> library(tools)   # unless already loaded, comes with base R
    R> file_ext("name1.csv")
    [1] "csv"
    R> 
    

    and

    R> file_path_sans_ext("name1.csv")
    [1] "name1"
    R> 
    

    as these are such a common tasks (cf basename in shell etc).

    0 讨论(0)
提交回复
热议问题