2012-08-22 79 views
5

Tengo una estructura que consiste en celdas. Quiero eliminar todos los espacios en blanco al principio de cada celda y, al final, y quiero conservar todos los espacios en blanco entre el texto en las celdas. Así que si tengo¿Cómo eliminar espacios en blanco al principio y al final en matlab?

s = ' bbb b bbbb ' 

quiero obtener

s = 'bbb b bbbb' 

quiero aplicar este método a un número desconocido de células en esta estructura (por ejemplo, 2x3), tal vez mediante un bucle. ¿Alguien tiene una idea de cómo hacerlo? Fallé con regexp.

+0

ahora recibí una respuesta simple pero útil: strtrim (s)! ¿Cómo puedo aplicarlo para cada celda? – berndh

Respuesta

5

Puede utilizar strtrim() en combinación con structfun() y indexación de celdas:

your_struct = structfun(@(x) strtrim(x{1}), your_struct); 

Esto solo funciona si su str UCT tiene un diseño como

your_struct.a = {' some string '}; 
your_struct.b = {' some other string '}; 
... 

Si tiene una estructura diferente, por ejemplo,

your_struct.a = { {' some string '} 
        {' some other string '}}; 

your_struct.b = { {' again, some string '} 
        {' again, some other string '}}; 

... 

Usted podría intentar

your_struct = structfun(@(x) ... 
    cellfun(@strtrim, x, 'uni', false), ... 
    your_struct, 'uni', false); 
+0

Tengo una celda digamos 10x2. cada celda contiene una cadena con espacios en blanco al principio, en el medio y al final, desea eliminar todo al margen de estos al principio. así que es como ** mi_celda {1,1} = 'nombre1' ** ** mi_celda {1,2} = 'cadena1' ** ** mi_celda {2,1} = 'nombre2 nueva' ** etc. ser la solución más simple que haría esto? el suyo no logré aplicar desafortunadamente. – berndh

+0

@ user1578163 ¿Qué obtiene cuando aplica mi solución? ¿Da un error? ¿Podría editar su pregunta para incluir una versión mínima de trabajo de su estructura + celda? –

+0

seguro, gracias: mi ejemplo de trabajo es ** M = {'title1' 'my name1'; 'title2' 'my name2'} ** lo que obtengo cuando aplique su solución: las entradas a STRUCTFUN deben ser estructuras escalares. – berndh

0

Si su matriz se llama, hacer:

newmatrix = cellfun(@strtrim, a, 'UniformOutput', false) 
+0

y cómo puedo aplicar esto para cada celda de manera eficiente? Porque escribir esta función al final no se elimina. – berndh

+0

¿Qué quieres decir con cada celda? – tomelse

+0

¿tienes una matriz? – tomelse

0

Si A es la estructura que contiene las células, entonces se podría hacer:

New_A=structfun(@strtrim,A,'UniformOutput',false) 
0

strtrim no todos los días cuidar el final de la cadena para mí, entonces uso deblank

así que si strtrim no hizo todo lo que quería, puede usar eso junto con deblank para obtener lo que quieres.

Cuestiones relacionadas