How to grab Numbers within a string

Hi, I'll try to be as concise as possible.
So I have a document full of files, where the filename denotes the coordinates of the dataset.
As an example, one file is called "Dx(005_50);Dy(095_25)" so it is 5.5mm on the x-axis and 95.25mm on the y axis. I have Matlab reading in the files and plotting the data in the correct coordinates when the naming convention used to just be "005_50_095_25" as I just used regexp and 'split' to seperate the numbers into different matrix positions.
I basically want to have Matlab do the same thing with the new naming conventions although I haven't had loads of experience with regexp and have tried using 'tokens' to no avail.
I basically want a result of;
ans = [005 , 50, 095, 25]
if that makes sense.
Cheers.

 Respuesta aceptada

Adam Danz
Adam Danz el 11 de Dic. de 2018
There are two different outputs. The first preserves the leading 0s by keeping the numbers in string format. The second puts the numbers into numerical format.
s = 'Dx(005_50);Dy(095_25)';
numStr = regexp(s, '\d+', 'match');
numStr =
1×4 cell array
{'005'} {'50'} {'095'} {'25'}
numVec = str2double(numStr);
numVec =
5 50 95 25

2 comentarios

Ryan Shone
Ryan Shone el 11 de Dic. de 2018
This has given me what I wanted and taken it a step further, really appreciate the quick response, didn't think to use 'match' rather than 'split' cannot thank you enough!
Adam Danz
Adam Danz el 11 de Dic. de 2018
Glad it worked out!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 11 de Dic. de 2018

Comentada:

el 11 de Dic. de 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by