Extract number after specific words
    16 views (last 30 days)
  
       Show older comments
    
I have an excel file with text and number. In the same cell I have text with value of latitude and longitude value. Exist one method to get numbers, specificing the text. 
For example: you extract the number after the word "latitude", you extract number after word "longitude".
2 Comments
  Kevin Holly
    
 on 19 Aug 2021
				Rachele,
Is the text consistent?
If the string is “latitude30”or “latitude3” for instance, you could use sscanf.
str = "latitude30";
sscanf(str,'latitude%f')
Accepted Answer
  DGM
      
      
 on 19 Aug 2021
        
      Edited: DGM
      
      
 on 19 Aug 2021
  
      Something like this?
C = {'latitude 45,0000','longitude 2,0000';
	'latitude 47,5000','longitude 5,0000';
	'latitude 50,8000','longitude 10,0000'};
D = regexp(C,'(?<=[latitude |longitude ])\d+,?\d*','match');
D = str2double(reshape(strrep(vertcat(D{:}),',','.'),size(C)))
That's assuming that all the lines are formatted the same and that the comma is the decimal separator.
2 Comments
  DGM
      
      
 on 20 Aug 2021
				
      Edited: DGM
      
      
 on 27 Aug 2021
  
			Without formatting, this is ambiguous.  
C = {aa bbb cccccc dddddd, latitude 45,0000 longitude 2,0000;
aaa bbbb cc, latitude 46,00000 longitude 2,00000;
aaaaa bbbbb cccc ddd eeee fffffff, latitude 46,00000 longitude 2,00000 latitude 49,00000 longitude 9,00000}
I'm going to assume it's just a 3x1 array with a double entry on the third line
% extra prefix chars per line
% mixed comma/dot decimal sep
% multiple lat/lon per row
C = { 'aa bbb cccccc dddddd, latitude 45.0500 longitude 2.0500';
	'aaa bbbb cc, latitude 46,00000 longitude 2,00000';
	'aaaaa bbbbb cccc ddd eeee fffffff, latitude 46,00000 longitude 2,00000 latitude 49,00000 longitude 9,00000'};
D = regexp(C,'(?<=[latitude |longitude ])\d+[,|.]?\d*','match');
D = cellfun(@(x) reshape(x.',2,[]).',D,'uniform',false);
D = str2double(reshape(strrep(vertcat(D{:}),',','.'),[],2))
Note that there are more rows in D than in C, since some lines have multiple entries.
More Answers (0)
See Also
Categories
				Find more on Data Type Conversion in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

