Reading numbers from String
Afficher commentaires plus anciens
Hello,
I have the following string
str = {'SRm40_' 'SRp5_'}
I want to read the numbers from str and include the m for a minus.
my desired Output would look like this
numbers = [-40 5]
I have tried the sscanf and regexp function but i dont seem to get it working
sscanf returns this
[numbers,~,err] = sscanf(string(str(1)),'%*5d')
err = 'Matching failure in format.'
So it cant read the the string because the first location has the 'E'.
If someone has a idea how to solve this, dont hesitate to answer :)
Have a great day
4 commentaires
Andrew McCauley
le 20 Juil 2022
Modifié(e) : Andrew McCauley
le 20 Juil 2022
This works for me:
str = {'SRm40_' 'SRp5_'};
number1 = str2num(str{1}(4:end-1));
if strcmp(str{1}(3), 'm')
number1=-number1;
end
number2 = str2num(str{2}(4:end-1));
if strcmp(str{2}(3), 'm')
number2=-number2;
end
numbers=[number1 number2];
Andrew McCauley
le 20 Juil 2022
(and if it's much more than two numbers, it won't be hard to turn into a loop)
Andrew McCauley
le 20 Juil 2022
Modifié(e) : Andrew McCauley
le 20 Juil 2022
In loop form in case needed:
str = {'SRm40_' 'SRp5_'};
numbers = zeros(1, length(str));
for countString = 1:length(str)
numbers(countString) = str2num(str{countString}(4:end-1));
if strcmp(str{countString}(3), 'm')
numbers(countString)=-numbers(countString);
end
end
Lukas Ehrler
le 20 Juil 2022
Réponse acceptée
Plus de réponses (1)
Yet another approach:
str = {'SRm40_','SRp5_'};
str = replace(str, 'm', '-'); % Handle negative numbers
str = replace(str, 'p', '+'); % Handle positive numbers
d = cellfun(@(x) sscanf(x, 'SR%d_'), str) % sscanf requires its first input to be scalar
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!