Matlab strcat function troubles with spaces
我正在尝试实现以下目标:
1 |
我期望看到"红色黄色白色",但是,我在命令输出上看到" redyellowwhite "。需要采取什么措施来确保正确地连接空间?预先感谢。
尽管STRCAT忽略尾随空白,但仍保留前导空白。试试这个:
1 |
或者,您可以只使用串联语法:
1 | ['red ' 'yellow ' 'white '] |
从matlab帮助页面获取strcat:
" strcat忽略结尾的ASCII空格字符,并从输出中忽略所有这些字符。ASCII的空格字符是空格,换行符,回车符,制表符,垂直制表符或换页符,所有这些都返回true来自MATLAB isspace函数的响应。使用串联语法[s1 s2 s3 ...]保留尾随空格。strcat不会忽略作为字符串单元格数组的输入。"
实际上,您可以简单地使用以下空格的ASCII代码:32。因此,您可以解决以下问题:
1 |
然后您将得到
您可以通过将strcat()或类似函数中的结尾空格放在单元格中来保护它。
1 2 |
在这个基本示例中不是很有用。但是,如果最后对字符串执行"向量化"操作,则非常方便。常规数组串联不像strcat那样进行一对多串联。
1 |
在单元格中标记" my",即使它是单个字符串也可以保留空格。请注意,您必须使用{}形式而不是调用cellstr(),它本身会剥离尾随空白。
这可能是因为Matlab有两种形式的代表字符串列表的形式:一个为cellstr数组,其中所有空格都是有效的;另一个为空白填充的二维char数组,其中每一行都视为字符串;以及尾随空白被忽略。 cellstr的形式最类似于Java和C中的字符串。如果您有许多长度相似的字符串,则二维字符形式可以提高内存效率。 Matlab的字符串操作函数在两种表示形式上都是多态的,有时会表现出这样的差异。像'foo'这样的char文字是二维char形式的简并的一串大小写,Matlab的函数将其视为此类。
或者您可以说:
1 |