Remove text in a string with numbers
67 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Chiara Scarpellini
am 20 Apr. 2021
Kommentiert: Image Analyst
am 21 Apr. 2021
How can I remove the text part and obtain a vector of just the last numbers?
e.g
Model1__DK1_5450.0
Model2__DK2_6969.0
Model3__DK3_3398.0
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 20 Apr. 2021
Bearbeitet: Image Analyst
am 20 Apr. 2021
You need to use digitsPattern:
txt = 'Model1__DK1_5450.0 '
pat = digitsPattern;
onlyNumbers = extract(txt, pat)
onlyNumbers =
4×1 cell array
{'1' }
{'1' }
{'5450'}
{'0' }
or you can use logical indexing:
digitIndexes = txt >= '0' & txt <= '9';
onlyNumbers = txt(digitIndexes)
onlyNumbers =
'1154500'
Or you can do fancier parsing if you just want certain numbers. Such as:
setOf4Digits = onlyNumbers(3:end-1); % Get only the 5450
Do you want the underlines, dots, and minus signs included?
3 Kommentare
Image Analyst
am 20 Apr. 2021
Well, you can either use indexing like this:
txt = 'Model1__DK1_5450.0 '
lastUnderlineIndex = find(txt == '_', 1, 'last');
% Extract from one past the last underline onwards.
onlyNumbers = strtrim(txt(lastUnderlineIndex + 1: end)) % strtrim gets rid of trailing space.
or you can use the regexp() method like Star shows. Your choice - either works.
In your original post, you posted strings with a trailing space. If you don't have that, you can omit the call to strtrim().
Image Analyst
am 21 Apr. 2021
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!