Separate path string into drive and folders

Hi,
using fileparts brings the path, the name and the exentension of a fullfile (e.g., C:\user\files\myFile.txt). Is there a function that separates the path into drive and folders, so that drive = 'C:' folder1 = 'user' folder2 = 'files' ?
Thx, Philipp

 Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 24 de Jul. de 2013
s='C:\user\files\myFile.txt'
out=regexp(s,'\','split')

6 comentarios

Manuel Lera Ramirez
Manuel Lera Ramirez el 5 de Jun. de 2018
Editada: Manuel Lera Ramirez el 5 de Jun. de 2018
For a general solution (would work on any OS) I would suggest
endout=regexp(s,filesep,'split')
Best
baby
baby el 25 de Feb. de 2022
works for me as well.
Riad
Riad el 17 de Mayo de 2024
Hello,
filesep is equivalent to "\" and it works fine for a kind of paths. But I've troubles when I want to separate paths that use this separator "/". I mean: when you derive blocks paths (using "find_system") you'll get paths like this : 'Swc_MTR/Run_MTR_1ms_sys/COMP_/In1' and :
regexp('Swc_MTR/Run_MTR_1ms_sys/COMP_/In1',filesep,'split')
won't work !
I want to avoid strsplit function by using a function that can work for both Windows/Linux OS !
Anyone can help ?
Stephen23
Stephen23 el 17 de Mayo de 2024
Editada: Stephen23 el 17 de Mayo de 2024
@Mohamed Riad: because you are already using REGEXP this is quite easy:
regexp('Swc_MTR/Run_MTR_1ms_sys/COMP_/In1','[/\\]+','split')
ans = 1x4 cell array
{'Swc_MTR'} {'Run_MTR_1ms_sys'} {'COMP_'} {'In1'}
Riad
Riad el 21 de Mayo de 2024
Hi @Stephen23 there more easier way by using strsplit but I want to avoid using either "/" or "\" in the script (on the server, I've a Linux OS):
strsplit('Swc_MTR/Run_MTR_1ms_sys/COMP_/In1','/')
ans =
1×4 cell array
{'Swc_MTR'} {'Run_MTR_1ms_sys'} {'COMP_'} {'In1'}
"filesep is equivalent to "\" and it works fine for a kind of paths"
No, what FILESEP is depends on the OS that MATLAB is currently running on.
"I want to avoid strsplit function by using a function that can work for both Windows/Linux OS !"
And now you write that you want to use STRSPLIT: your requirements keep on changing.
"I want to avoid using either "/" or "\" in the script (on the server, I've a Linux OS)"
I thought the requirement is to split on either of the path separators, which is also easy with STRSPLIT:
strsplit('Swc_MTR/Run_MTR_1ms_sys/COMP_/In1',{'/','\'})
ans = 1x4 cell array
{'Swc_MTR'} {'Run_MTR_1ms_sys'} {'COMP_'} {'In1'}

Iniciar sesión para comentar.

Más respuestas (2)

Christian Schwermer
Christian Schwermer el 9 de Sept. de 2018
The shortest solution is to split the string using filesep as delimeter. filesep returns the platform-specific file separator "\" or "/".
pathparts = strsplit(s,filesep);
Dominique
Dominique el 19 de Jul. de 2023
path = uigetdir()
foldername = strsplit(path,"\");
foldername = foldername(end);

Categorías

Más información sobre Filename Construction en Centro de ayuda y File Exchange.

Preguntada:

el 24 de Jul. de 2013

Comentada:

el 21 de Mayo de 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by