Extracting number from a string
Mostrar comentarios más antiguos
How can I extract the number 1 from the string 'M1' ?
Respuesta aceptada
Más respuestas (3)
result = 'M1' - '0';
result(result < 0 | result > 9) = [];
1 comentario
Anh Tran
el 16 de Dic. de 2016
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)
1 comentario
Anh Tran
el 16 de Dic. de 2016
Pierre Harouimi
el 2 de Nov. de 2022
1 voto
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.
"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.
Categorías
Más información sobre Characters and Strings en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!