欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用matlab对路径的字符串进行分割和合成

程序员文章站 2022-05-09 23:47:04
...

参考:
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类型,所以如果要输出某单元字符串时,还需要对要使用的单元进行强制转换。图片是代码的结果。
使用matlab对路径的字符串进行分割和合成
以下的代码要实现的需求是,提取出路径的最后一部分的字符串,然后以备后续功能的使用

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'