如何将Matlab字符串拆分为两个已知后缀?

时间:2014-08-14 15:57:05

标签: matlab parsing

我需要将一个字符串拆分为两个组件。作为一个例子,我有字符串:

s = 'Hello1_1000_10_1_data'

我希望将其拆分为两个字符串

str1 = 'Hello1_1000_10_1'

str2 = '_data'
重要的一点是,我不能确定第一个字符串的格式,唯一可以确定的是'后缀'要读入第二个字符串的内容总是读取' _data'。做这个的最好方式是什么?我查看了strtok和regexp上的文档,但它们似乎没有提供我想要的东西。

4 个答案:

答案 0 :(得分:3)

如果你总是知道后缀的长度,你可以使用它:

s = 'Hello1_1000_10_1_data'
str1 = s(1:end-5)

或者其他:

s = 'Hello1_1000_10_1_data'
suffix = length('_data')
str1 = s(1:end-suffix)

答案 1 :(得分:1)

您可以使用:

s = 'Hello1_1000_10_1_data';

str = regexp(s, '(.*)(_data)', 'tokens'){1};
str{1}    %//     Hello1_1000_10_1
str{2}    %//     _data

如果_data在文件名中多次出现,则仍然有效。

答案 2 :(得分:0)

您可以使用strfind():

s = 'Hello1_1000_10_1_data';
suffix = '_data';
i = strfind(s,suffix);
if any(i)
    i = i(end);
    prefix = s(1:i-1);
end

Best,Nras。

答案 3 :(得分:0)

您还可以使用strsplit(),如下所示:

s = 'Hello1_1000_10_1_data';
suffix = '_data';
str = strsplit(s,suffix);
str1 = str{1}

此外,您可以将strsplit()与多个分隔符结合使用。