How to convert string to number and process underscores? (e.g. '57_77_' to 57.77)
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Daniel Bridges
le 14 Mar 2018
Commenté : Daniel Bridges
le 15 Mar 2018
How do you convert a string with underscores to a number, namely '57_77_' to 57.77? What commands would you use?
I am looking through the documentation, e.g. join, compose, sprintf, extractBefore, trying to figure out how to process such a string, namely to execute the steps:
- delete final '_'
- convert '_' to decimal point '.'
- convert string to number
Réponse acceptée
Stephen23
le 14 Mar 2018
Modifié(e) : Stephen23
le 14 Mar 2018
Faster and more efficient than using str2num (which hides a slow eval call inside) is to simply use the low-level function sscanf:
>> sscanf(strrep('57_77_','_','.'),'%f')
ans = 57.770
This is ten times faster than the accepted answer (1e4 iterations):
Elapsed time is 0.277028 seconds. % my code
Elapsed time is 2.63426 seconds. % accepted answer
5 commentaires
Stephen23
le 14 Mar 2018
If the CSV files all have the exactly same format then there is no reason why detectImportOptions has to be called 40 times. Why not move it out of the function, call it once before the loop, and pass that data as an input argument?
Plus de réponses (3)
Birdman
le 14 Mar 2018
Modifié(e) : Birdman
le 14 Mar 2018
The wise thing would be to first convert underlines to dots by using regexprep or strrep:
a=regexprep(a,'_','.')
or
a=strrep(a,'_','.')
and then delete the last character by
a(end)=[]
a=str2num(a)
Other way would be doing this by using regexp:
idx=regexp(a,'_')
a(idx)=['.',' ']
a=str2num(a)
2 commentaires
Jos (10584)
le 14 Mar 2018
you can remove the last element of the string before the replacement of the underscore ...
Jos (10584)
le 14 Mar 2018
all in one go:
a = '12_23_'
v = str2num(strrep(a(1:end-1), '_', '.'))
2 commentaires
Birdman
le 14 Mar 2018
You say all in one go but you use two functions in one line, actually it is all in two go :)
Daniel Bridges
le 14 Mar 2018
Modifié(e) : Daniel Bridges
le 14 Mar 2018
4 commentaires
Birdman
le 14 Mar 2018
That was a misunderstanding, I have just edited it. Sorry for the misunderstanding.
Voir également
Catégories
En savoir plus sur String dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!