使用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'

猜你喜欢

转载自blog.csdn.net/Chaolei3/article/details/80747456