How to get the number in the cell containing the letter and space
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    eko supriyadi
 el 1 de Jun. de 2022
  
    
    
    
    
    Comentada: dpb
      
      
 el 2 de Jun. de 2022
            Hi everyone
consider i have cell matrix like this:
a={'AABB 01001';'AACC 01101'; 'AACC  01201'; 'AADD 01301'; 'AAEE   01401'}
so, it will produce:
a =
  5×1 cell array
    {'AABB 01001'  }
    {'AACC 01101'  }
    {'AACC  01201' }
    {'AADD 01301'  }
    {'AAEE   01401'}
Now, I have no idea how to take the numbers only (because contain letter and single-multiple space).. so i want the result is (with leading zeros in a number too):
 a = 01001
     01101
     01201
     01301
     01401
the a result is double format.
thank you for your help :)
4 comentarios
  dpb
      
      
 el 1 de Jun. de 2022
				>> compose('%05d',str2double(extractAfter(a,' ')))
ans =
  5×1 cell array
    {'01001'}
    {'01101'}
    {'01201'}
    {'01301'}
    {'01401'}
>> 
  Stephen23
      
      
 el 2 de Jun. de 2022
				"with leading zeros in a number too"
No numeric class on any common computer platform stores leading zeros, so what you ask for is not possible.
You could store the data as text, in which case you can keep the leading zeros.
Respuesta aceptada
  Stephen23
      
      
 el 2 de Jun. de 2022
        
      Editada: Stephen23
      
      
 el 2 de Jun. de 2022
  
      No indirect, fragile, round-about conversion to other data classes is required. Here are two direct approaches:
a = {'AABB 01001';'AACC 01101'; 'AACC  01201'; 'AADD 01301'; 'AAEE   01401'}
b = extract(a,digitsPattern)
b = regexp(a,'\d+','match','once')
Más respuestas (1)
  dpb
      
      
 el 1 de Jun. de 2022
        
      Editada: dpb
      
      
 el 1 de Jun. de 2022
  
      >> str2double(extractAfter(a,' '))
ans =
        1001
        1101
        1201
        1301
        1401
>> 
ADDENDUM:
>> compose('%05d',str2double(extractAfter(a,' ')))
ans =
  5×1 cell array
    {'01001'}
    {'01101'}
    {'01201'}
    {'01301'}
    {'01401'}
>> 
or
>> string(compose('%05d',str2double(extractAfter(a,' '))))
ans = 
5×1 string array
"01001"
"01101"
"01201"
"01301"
"01401"
>> 
2 comentarios
  eko supriyadi
 el 1 de Jun. de 2022
				
      Editada: eko supriyadi
 el 1 de Jun. de 2022
  
			
		
  dpb
      
      
 el 2 de Jun. de 2022
				If you don't need the numeric values as numeric, there's no point in converting them to numeric just to return them back to string or cellstr() to have the leading zero to display.  In that case just extract the numeric pattern in one form or another -- I used the simplest syntax possible, the pattern or regular expression offers more generality.
If want a char() array instead, then just convert directly --
>> char(strtrim(extractAfter(a,' ')))
ans =
  5×5 char array
    '01001'
    '01101'
    '01201'
    '01301'
    '01401'
>> 
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!