How can i extract the numbers from string?

2 次查看(过去 30 天)
Im trying to extract the numbers from a cell array? How can i do this?
cell array:
filename =
1×12 cell array
Columns 1 through 4
{'104p8.png'} {'105.png'} {'105p2.png'} {'105p4.png'}
Columns 5 through 8
{'105p6.png'} {'105p8.png'} {'106.png'} {'106p2.png'}
Columns 9 through 12
{'106p4.png'} {'106p6.png'} {'106p8.png'} {'107.png'}
Thanks
  4 个评论
Happy PhD
Happy PhD 2022-11-7
I expect to return the value: 104.8
p is '.'
Marcel
Marcel 2022-11-7
you might wanna update you question with this information

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2022-11-7
编辑:Stephen23 2022-11-7
Here are two approaches:
C = {'104p8.png','105.png','105p2.png','105p4.png','105p6.png','105p8.png','106.png','106p2.png','106p4.png','106p6.png','106p8.png','107.png'}
C = 1×12 cell array
{'104p8.png'} {'105.png'} {'105p2.png'} {'105p4.png'} {'105p6.png'} {'105p8.png'} {'106.png'} {'106p2.png'} {'106p4.png'} {'106p6.png'} {'106p8.png'} {'107.png'}
V = str2double(strrep(strrep(C,'.png',''),'p','.'))
V = 1×12
104.8000 105.0000 105.2000 105.4000 105.6000 105.8000 106.0000 106.2000 106.4000 106.6000 106.8000 107.0000
V = str2double(regexprep(C,{'\.png$','p'},{'','.'},'ignorecase')) % more robust
V = 1×12
104.8000 105.0000 105.2000 105.4000 105.6000 105.8000 106.0000 106.2000 106.4000 106.6000 106.8000 107.0000

更多回答(1 个)

Marcel
Marcel 2022-11-7
编辑:Marcel 2022-11-7
Hi i made a test script and came up with the following code. I found a solution here
example = cellstr(["1024.png", "image1003.png", "photo-1234.png"])
for i=1:length(example)
name = example{i};
numbers = str2double(extract(name, digitsPattern))
end
example =
1×3 cell array
{'1024.png'} {'image1003.png'} {'photo-1234.png'}
numbers =
1024
numbers =
1003
numbers =
1234

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

标签

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by