rápido - separar nombres y apellidos en excel formula
Dividir un nombre de archivo en nombre, extensión (3)
Tengo el nombre de un archivo como este: name1.csv
y me gustaría extraer dos subcadenas de esta cadena. Una que almacena el name1
en una variable y otra que almacena la extensión, csv
, sin el punto en otra variable.
He estado buscando si hay una función como indexOf
de Java que permite hacer ese tipo de manipulación, pero no he encontrado nada en absoluto.
¿Alguna ayuda?
Usando expresiones regulares, puedes hacer esto por ejemplo
regmatches(x=''name1.csv'',gregexpr(''[.]'',''name1.csv''),invert=TRUE)
[[1]]
[1] "name1" "csv"
Use strsplit()
:
http://stat.ethz.ch/R-manual/R-devel/library/base/html/strsplit.html
Ejemplo:
> strsplit(''name1.csv'', ''[.]'')[[1]]
[1] "name1" "csv"
Tenga en cuenta que el segundo argumento es una expresión regular, es por eso que no puede simplemente pasar un solo punto (se interpretará como "cualquier carácter").
Use strsplit
:
R> strsplit("name1.csv", "//.")[[1]]
[1] "name1" "csv"
R>
Tenga en cuenta que a) necesita escapar del punto (ya que es un metacarácter para expresiones regulares) yb) lidiar con el hecho de que strsplit()
devuelve una lista de la cual típicamente solo el primer elemento es de interés.
Una solución más general implica expresiones regulares donde puede extraer las coincidencias.
Para el caso especial de nombres de archivos, también tiene:
R> library(tools) # unless already loaded, comes with base R
R> file_ext("name1.csv")
[1] "csv"
R>
y
R> file_path_sans_ext("name1.csv")
[1] "name1"
R>
ya que estas son tareas comunes (cf basename
en shell, etc.).