sirve que para matlab strcat

que - matlab strcat space



Matlab strcat funciĆ³n problemas con espacios (5)

Estoy tratando de lograr esto:

strcat(''red '', ''yellow '', ''white '')

Esperaba ver "rojo amarillo blanco", sin embargo, veo "redyellowwhite" en la salida del comando. ¿Qué se debe hacer para garantizar que los espacios se concatenan correctamente? Gracias por adelantado.


Aunque STRCAT ignora el espacio en blanco al final , aún conserva el espacio en blanco STRCAT . Prueba esto:

strcat(''red'','' yellow'','' white'')

Alternativamente, puede usar la sintaxis de concatenación:

[''red '' ''yellow '' ''white '']


De hecho, puede simplemente usar el código de espacio ASCII: 32. Entonces, puede resolver el problema de esta manera:

str = strcat(''red'', 32, ''yellow'', 32, ''white'');

Entonces obtendrá str = ''red yellow white'' .


Desde la página de ayuda de matlab para strcat:

"strcat ignora los caracteres de espacio en blanco ASCII posteriores y omite todos esos caracteres de la salida. Los caracteres de espacio en blanco en ASCII son espacio, nueva línea, retorno de carro, pestaña, pestaña vertical o caracteres de alimentación de formulario, todos los cuales devuelven una respuesta verdadera del Función isspace de MATLAB. Use la sintaxis de concatenación [s1 s2 s3 ...] para conservar los espacios finales. Strcat no ignora las entradas que son matrices de celdas de cadenas. "


Puede proteger los espacios en blanco finales en strcat () o funciones similares colocándolo en una celda.

str = strcat({''red ''}, {''yellow ''}, {''white ''}) str = str{1}

No es muy útil en este ejemplo básico. Pero si terminas haciendo operaciones "vectorizadas" en las cuerdas, es útil. La concatenación regular de matrices no hace la concatenación de 1 a muchos que hace strcat.

strs = strcat( {''my ''}, {''red '',''yellow '',''white ''}, ''shirt'' )

Poner ''mi'' en una celda a pesar de que es una sola cadena preservará el espacio en blanco. Tenga en cuenta que debe usar el formulario {} en lugar de llamar a cellstr (), que a su vez eliminará el espacio en blanco al final.

Probablemente todo esto se debe a que Matlab tiene dos formas de representar listas de cadenas: como una matriz de celdas, donde todos los espacios en blanco son significativos y como una matriz de caracteres bidimensional acolchada, con cada fila tratada como una cadena, y los espacios en blanco finales ignorados . La forma de celltr más se asemeja a cadenas en Java y C; la forma de charla 2-D puede ser más eficiente desde el punto de vista de la memoria si tiene muchas cadenas de longitud similar. Las funciones de manipulación de cadenas de Matlab son polimórficas en las dos representaciones, y algunas veces muestran diferencias como esta. Un literal char como ''foo'' es un caso degenerado de una cadena de la forma de char 2-D, y las funciones de Matlab lo tratan como tal.


o puedes decir:

str = sprintf(''%s%s%s'', ''red '', ''yellow '', ''white '')