Extracting number from a string
조회 수: 422 (최근 30일)
이전 댓글 표시
채택된 답변
Stephen23
2016년 12월 16일
Here are two very simple methods:
>> str = 'M1';
>> sscanf(str,'M%d')
ans = 1
>> str(2)-'0'
ans = 1
댓글 수: 2
추가 답변 (3개)
Image Analyst
2016년 12월 16일
Here are two ways, depending on if you want the extracted "1" to be a character (string) or a number:
str = 'M1' % First define the string.
str1 = str(2) % Gives a character
dbl1 = str2double(str(2)) % Give a number (double)
Pierre Harouimi
2022년 11월 2일
댓글 수: 2
Image Analyst
2022년 11월 2일
편집: Image Analyst
2022년 11월 2일
Example:
string = 'abc123def456789ghi'
numbers = str2double(extract(string, digitsPattern))
It would be nice if they made a little wrapper function for that, since it's hard to remember. Something simple like
numbers = extractNumbers(string);
would be easier for most people I think, than having to know about digitsPattern, extract, str2double, and then having to nest them all together.
Stephen23
2022년 11월 3일
편집: Stephen23
2022년 11월 3일
"Something simple like... would be easier for most people I think..."
The devil is in the details, because it really depends on what you define as a "number". Some users will want to match fractional digits (which probably means selecting for e.g. comma vs dot vs comma|dot), whereas others will want to match only integers and to treat commas/dots as non-numeric. Ditto exponent notation, NaNs, Infs, other bases, fixed-width numbers, various Unicode minus/plus signs, etc.
So it turns out to be not very simple at all, once the different "number" formats are considered. The user specifying a regular expression or MATLAB pattern is one way to give them that control, by making those choices explicit.
참고 항목
카테고리
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!