Extracting number from a string
1.169 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Respuesta aceptada
Stephen23
el 16 de Dic. de 2016
Here are two very simple methods:
>> str = 'M1';
>> sscanf(str,'M%d')
ans = 1
>> str(2)-'0'
ans = 1
2 comentarios
Más respuestas (3)
Image Analyst
el 16 de Dic. de 2016
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
el 2 de Nov. de 2022
2 comentarios
Image Analyst
el 2 de Nov. de 2022
Editada: Image Analyst
el 2 de Nov. de 2022
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
el 3 de Nov. de 2022
Editada: Stephen23
el 3 de Nov. de 2022
"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.
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!