filter string in the string

Hello,
I am quietly new with matlab script.
I have a string as example.
str = 'this matlab is a good software, it is a version 9.4 which is equal to 2018a'
objective, I want to filter the number from that string ( so it is "9.4").
Note that I cannot see that number. All i want is to scan that number and show in my workspace.
so the scribt should read the text and identify the number of the version and show in my workspace.
I appreciate your help.
Regards,
LN

2 个评论

Do you not want to also get '2018'? What rule would the code use to exclude this?
doc regexp
should help do this. It takes a bit of getting used to parameterising regular expressions though. There are likely simpler ways depending how robust you want it to be.

请先登录,再进行评论。

 采纳的回答

Stephan
Stephan 2019-8-21
编辑:Stephan 2019-8-21
str = 'this matlab is a good software, it is a version 9.4 which is equal to 2018a'
str = char(str);
idx = find((uint8(str)>=48 & uint8(str)<=57) | uint8(str)==46 | uint8(str)==32);
res = split(string(str(idx))," ");
res(res=="")=[]
The second line makes sure that it also works with:
str = "this matlab is a good software, it is a version 9.4 which is equal to 2018a"

3 个评论

The conversion to uint8 is a waste of time, you could just write
idx = find((str>=48 & str<=57) | str==46 | str==32);
even clearer:
idx = find((str>='0' & str<='9') | str=='.' | str==' ');
you could also use ismember:
idx = find(ismember(str, '0123456789. '));
thank you for the hint!
Thank you, i found the anwser so useful

请先登录,再进行评论。

更多回答(2 个)

Stephen23
Stephen23 2019-8-21
编辑:Stephen23 2019-8-21
>> str = 'this matlab is a good software, it is a version 9.4 which is equal to 2018a';
>> out = regexp(str,'\d+\.\d+','match','once')
out = 9.4
Guillaume
Guillaume 2019-8-21
编辑:Guillaume 2019-8-21
Using a regular expression:
numbers = regexp(youstring, '\<\d*\.?\d+\>', 'once')
which will extract any number not attached to text. Allowed formats for number is 123, 123.45, .123

类别

在 帮助中心 和 File Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by