strfind issue
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi,
I have a filename (including whole path) as a string with directories separated by / e.g. root/folder/file.
I am using strfind to find the slashes as follows and to give an index array of the position of the / symbols, :
      % Find all occurances of the string '/'
      [no_slash] = strfind ( line, '/' );
and then trying to extract the filename as a string as follows:
      % Extract the case number:
      caseNo = ( [no_slash(3)+1 : no_slash(3)+4] );
I get NaN returned and I don't know why! If anyone has an idea or an alternative method then it would be much appreciated!!
Thanks,
Robbie
0 comentarios
Respuesta aceptada
  Matt Tearle
    
 el 29 de Nov. de 2011
        As Daniel says, there must be more going on. Can you copy the code directly?  strfind returns the indices; if there are no matches, it returns []. Hence, if line was 'root/folder/file', strfind(line,'/') returns [5,12].
So in this case you'd get an indexing (out of bounds) error on the next line. If there was three slashes in the string, you'd get a vector like [13, 14, 15, 16].
Are you perhaps trying to extract a portion of the string and str2num it? In which case, you want
caseNo = str2double(line(no_slash(3)+1 : no_slash(3)+4))
(Note: if you leave out the line in the above command, you get NaN. Or if line isn't a string.)
2 comentarios
Más respuestas (1)
  Daniel Shub
      
      
 el 29 de Nov. de 2011
        The only way
[no_slash(3)+1 : no_slash(3)+4]
can be equal to NaN is if no_slash(3) is equal to NaN. You are not showing us something important because I am pretty sure that strfind does not return NaN.
All that said fileparts might help you out...
doc fileparts
3 comentarios
  Daniel Shub
      
      
 el 29 de Nov. de 2011
				What is no_slash equal to? Can you check that line is also a string. Please post a MWE with what line needs to be to get the error?
Ver también
Categorías
				Más información sobre Characters and Strings en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


