Find and convert negative number strings
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ivy Chen
el 23 de Mzo. de 2018
I need to find a negative number between terms A and B in a string. The following code find the 1x5 char '-20', but not as number -20. So I can not use it directly to for continue calculation. What is the easiest way to handle this?
cell2mat(regexp(SDstring,'(?<=Reference Level\d*).*?(?= dBm)','match'));
8 comentarios
Guillaume
el 23 de Mzo. de 2018
There are two problems:
- cell2mat which is never going to convert a string of numbers into an actual number. Stephen's answer of using str2double for that is correct
- the correct regular expression to detect the number. To design the correct regular expression we need to know exactly what is allowed and what isn't. Is the number always an integer or can it be decimal. Is exponential notation (e.g 1.2e5) a possibility? Is the decimal separator always '.'? Can the number include thousands separator ,? etc.
Respuesta aceptada
Stephen23
el 23 de Mzo. de 2018
Editada: Stephen23
el 23 de Mzo. de 2018
>> str = 'Reference Level -50 fieldB';
>> num = str2double(regexp(str,'[+-]?\d+','match'))
num = -50
6 comentarios
Guillaume
el 23 de Mzo. de 2018
If the number can be decimal, then
fmt = '(?<=Reference Level\s*)[+-]?\d*\.?\d+(?=\s*fieldB)'
Más respuestas (0)
Ver también
Categorías
Más información sobre Data Type Conversion en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!