Remove strings from an array based on string length

6 visualizaciones (últimos 30 días)
Hello. I'm trying to remove strings from a string array based on string length. I want to remove strings with lesser than 2 alphabets. I tried the following code but I'm getting an error
clc; clear;
s = {'a';'b';'cat';'apple'};
s1 = string(s);
String_length = strlength(s1);
Min_length = 2;
Modified_string = [s1 String_length];
indices = find(Modified_string(:,2) < Min_length);
Modified_string(indices,:) = [];
Error using <
Comparison between string and double is not supported.
Error in Dummy (line 8)
indices = find(Modified_string(:,2) < Min_length);
  1 comentario
Stephen23
Stephen23 el 14 de Oct. de 2019
Editada: Stephen23 el 14 de Oct. de 2019
This approach is very complex, with one implicit conversion from numeric to string, which then requires an explicit conversion from string to numeric. Pointless type conversions should be avoided, as they just slow code down without any benefit.
Here is a much simpler and more efficient solution using basic MATLAB indexing:
out = s1(strlength(s1)>=2))

Iniciar sesión para comentar.

Respuesta aceptada

Thiago Henrique Gomes Lobato
Thiago Henrique Gomes Lobato el 13 de Oct. de 2019
For you to do the comparison you must first convert the string to a numeric. The following code should solve your problem:
clc; clear;
s = {'a';'b';'cat';'apple'};
s1 = string(s);
String_length = strlength(s1);
Min_length = 2;
Modified_string = [s1 String_length];
indices = find( str2double(Modified_string(:,2)) < Min_length);
Modified_string(indices,:) = []
Modified_string =
2×2 string array
"cat" "3"
"apple" "5"

Más respuestas (0)

Categorías

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

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by