Find and convert negative number strings

14 Ansichten (letzte 30 Tage)
Ivy Chen
Ivy Chen am 23 Mär. 2018
Bearbeitet: Stephen23 am 23 Mär. 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 Kommentare
Guillaume
Guillaume am 23 Mär. 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.
Ivy Chen
Ivy Chen am 23 Mär. 2018
Thanks and here are the specifics. The desired number is always between the 2 terms "Reference Level" AND "dBm" and
  1. It will have space(s) after/before the terms
  2. The number can be decimal
  3. No exponential notation
  4. The decimal separator is always '.'
  5. No thousands separator

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 23 Mär. 2018
Bearbeitet: Stephen23 am 23 Mär. 2018
>> str = 'Reference Level -50 fieldB';
>> num = str2double(regexp(str,'[+-]?\d+','match'))
num = -50
  6 Kommentare
Guillaume
Guillaume am 23 Mär. 2018
If the number can be decimal, then
fmt = '(?<=Reference Level\s*)[+-]?\d*\.?\d+(?=\s*fieldB)'
Ivy Chen
Ivy Chen am 23 Mär. 2018
Got it. I only change the \s* to \W* to catch additional non-word items between two terms. thanks!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by