Extract numbers from char type
39 ビュー (過去 30 日間)
古いコメントを表示
how can I extract the numbers from a character array value of '4.64 km' and return them as 4.64?
0 件のコメント
採用された回答
Star Strider
2022 年 10 月 18 日
編集済み: Star Strider
2022 年 10 月 18 日
Probably the easiest way —
s = '4.64 km';
c = regexp(s, '\d*\.\d*|\d*', 'match')
n = str2double(c)
EDIT — (18 Oct 2022 at 19:38)
In the event any of the numbers are negative —
s = '4.64 -42 2 -3.14 km';
c = regexp(s, '(\-\d*|\d*)\.\d*|(\-\d*|\d*)', 'match')
n = str2double(c)
.
4 件のコメント
Star Strider
2022 年 10 月 19 日
I saw that and wondered, however I did not change my answer, and just learned from the important parts of your syntax.
その他の回答 (2 件)
Les Beckham
2022 年 10 月 18 日
Or, in one line of code:
s = '4.64 km';
num = sscanf(s, '%f') % num will be a double
1 件のコメント
Walter Roberson
2022 年 10 月 18 日
Yes this works well when the number is at the beginning. You can also put literal text into the format if you expect an exact match.
The suggestions to use regexp to extract the text of the number work well when you need flexibility.
In cases where you have tables of text see textscan() which can be used on a character vector that has embedded newlines.
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!