使用matlab对路径的字符串进行分割和合成
参考:
https://blog.csdn.net/yf210yf/article/details/42421539
https://jingyan.baidu.com/article/8cdccae92fad16315413cdd8.html
字符串分割
在对文件夹进行操作的时候,有时候我们不免要对路径进行分割,已提取具体某一段的路径字符串。
在这里有2中方法,以下分别介绍。
正则表达式方法regexp
1)借助正则表达式函数regexp的split模式。
其基本语法为:
S = regexp(str, char, ‘split’),str为要进行分割的字符串,char指明以何种字符串进行分割,字符串split就表示split模式。
值得注意的是,分割之后的结果是一个cell数组。也就是说结果的每个单元都是cell类型,所以如果要输出某单元字符串时,还需要对要使用的单元进行强制转换。图片是代码的结果。
以下的代码要实现的需求是,提取出路径的最后一部分的字符串,然后以备后续功能的使用
datasetCur = 'remote/result_4_bicu_2_ori'
res = regexp(datasetCur , '/', 'split');
str1 = char(str1(end)); % str1 = 'result_4_bicu_2_ori'
strsplit函数
2)直接使用字符串分割函数strsplit。
其基本语法为 str = strsplit(str,char);默认按照空白字符分割。
实现1)中相同的目的的代码如下:
datasetCur = 'remote/result_4_bicu_2_ori'
an = strsplit(datasetCur,'/');
str2 = char(an(end)); % str2 = 'result_4_bicu_2_ori'
字符串合成
既然有路径的分割就有路径的合成。这里也稍微提一下我所看到的路径合成的方法。
使用普通的方法‘[]’ 和fullfile函数
比如我要读取上面文件夹下的图像:img_100_SRF_4_LR.png,而这个文件夹所有的文件格式都是img_XXX_SRF_4_LR.png。“XXX”表示图像的编号,如果我们使用for循环来一张一张的读取图像并处理,代码如下:
for imgID = 1:numOfImages
imgName = ['img_', num2str(imgID, '%03d'), '_SRF_4_LR.png'];
img = imread(imgName);
... % 你要进行的操作
end
这里再补充一下,使用“[]”合成路径,是不带有文件分隔符’/’的,之所以讲这个小区别,是因为fullfile函数会自动填补上文件分割符。这一点也决定了2者使用环境下的不同。这里如果是合成路径就使用fullfile函数,比较方便,如要合成’data/my/result’的目标路径。而要是访问文件夹内的图像之类的,由于不需要文件分隔符,所以使用[]比较方便
path = fullfile('data','my','result') % path = 'data\my\result';
str = ['data','my','result']; % str = 'datamyresult'
上一篇: Java项目拿到当前项目所在目录