find function using wildcards
    23 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
fileID = fopen(full_file_name);
header = textscan(fileID, '%[^,\n]');
fclose(fileID);
end_of_header_line=find(contains(header{1,1},'*  '));
Here, I find all line numbers of header includes any * with two spaces or more. I need to modify the last part of the above codes to find all line numbers includes * with two spaces and following four digit numbers such as; 
*  2021
For example header includes:
/*     GeoForschungsZentrum Potsdam                                             
/*                                                                              
/*                                                                              
*  2021  3 28  0  0  0.00000000    
The line numbers (end_of_header_line) produced from above codes includes all 4 lines. What I need to find only the last line.    
0 Commenti
Risposta accettata
  Rik
      
      
 il 17 Set 2021
        str={'/*     GeoForschungsZentrum Potsdam                                             '
'/*                                                                              '
'/*                                                                              '
'*  2021  3 28  0  0  0.00000000  '};
pat="*"+whitespacePattern(2,inf)+digitsPattern(1);
contains(str,pat)
Alternatively you can use regular expressions, which are not much harder to use.
2 Commenti
  Rik
      
      
 il 17 Set 2021
				When you posted your question you had the opportunity to enter your release. Please do so next time. As you can see it is sometimes relevant.
str={'/*     GeoForschungsZentrum Potsdam                                             '
'/*                                                                              '
'/*                                                                              '
'*  2021  3 28  0  0  0.00000000  '};
pat=['\*',...       % a literal *
    '\s\s','\s*',...% two whitespace characters, followed by 0 or more
    '\d'];          % any digit
pos=regexp(str,pat) %regexp returns the position of a match
%The legacy syntax of cellfun is the only case where it is faster than a
%loop. However, it doesn't work properly with all data types.
logical(cellfun('prodofsize',pos))
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

