Borrar filtros
Borrar filtros

Get lengths of nonuniform-length character strings in an array without counting padded blanks

1 visualización (últimos 30 días)
Isn't there an easy way to get the lengths of non-blank parts of character vectors placed into an array like this:
A = char('Small', 'Medium', 'Very Large')
The answer I'd like is: 5 6 10. I'd like a one or two-line solution if possible that returns a vector with the lengths of the non-blank parts of each character string in the matrix but counts blanks that fall WITHIN the character string [between words.] In the above case, the matrix A would be 3x10 but I want a function that ignores only the blanks padded onto the end of each string when the matrix is formed and I can't always get the length of the vectors before they're placed in the matrix.
David Horton

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 2 de Jul. de 2013
out=cellfun(@numel,cellstr(A))
  3 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 2 de Jul. de 2013
Editada: Azzi Abdelmalek el 2 de Jul. de 2013
You can also use arrayfun:
out=arrayfun(@(x) numel(strtrim(A(x,:))),1:size(A,1))
% look at strtrim function
doc strtrim

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 2 de Jul. de 2013
cellfun(@(S) find(S~=' ',1,'last'), A)
  1 comentario
David
David el 2 de Jul. de 2013
Thanks but this doesn't work on a character array and I have tried arrayfun, which functions similarly to cellfun. Perhaps using arrayfun is a solution but I haven't figured out yet HOW to us it appropriately.
Thanks for your help anyway.

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by