我有一个字符串,我需要返回两个字符。
我试过strsplit
,但分隔符必须是一个字符串,我的字符串中没有任何分隔符。相反,我总是希望在我的字符串中得到第二个数字。该数字始终为2位数。
示例:001a02.jpg我使用fileparts函数删除图像的扩展名(jpg),所以我得到这个字符串:001a02 预期的回报值是02
另一个例子:001A43a。返回值:43
另一个:002A12。返回值:12
所有文件名都在矩阵1002x1中。也许我可以使用textscan
,但在第二个例子中,它会给出“43a”。
答案 0 :(得分:2)
(就这样,这个问题没有得到解答,这是一种可能的方法:)
解决这个问题的一种方法是使用正则表达式拆分(你提到的MATLAB' s strsplit
):
str = '001a02.jpg';
C = strsplit(str,'[a-zA-Z.]','DelimiterType','RegularExpression');
结果:
C =
'001' '02' ''
在旧版本的MATLAB中,在引入strsplit
之前,使用regexp(...,'split')
实现了类似的功能。
如果您想了解有关正则表达式的更多信息(缩写为" 正则表达式"或" regexp "),有很多在线资源(JGI ..)
在你的情况下,如果你只需要从你可以使用的字符串中取第5和第6个字符:
D = str(5:6);
...如果你想将它们转换为数字,你可以使用:
E = str2double(str(5:6));
答案 1 :(得分:1)
如果你的号码总是在字符串中的某个位置,你可以简单地索引这个位置。
在您给出的示例中,数字始终是字符串中的第5个和第6个字符。
filename = '002A12';
num = str2num(filename(5:6));
否则,如果格式化更复杂,您可能需要使用正则表达式。还有一个类似的问题matlab - extracting numbers from (odd) string。修改在那里找到的代码,您可以执行以下操作
all_num = regexp(filename, '\d+', 'match'); %Find all numbers in the filename
num = str2num(all_num{2}) %Convert second number from str