我正在努力实现这个目标:
strcat('red ', 'yellow ', 'white ')
Run Code Online (Sandbox Code Playgroud)
我希望看到"红黄白",但是,我在命令输出上看到"redyellowwhite".需要做些什么来确保空间连接正确?提前致谢.
nsa*_*ers 22
从strlab的matlab帮助页面:
"strcat忽略尾随的ASCII空白字符并省略输出中的所有这些字符.ASCII中的空格字符是空格,换行符,回车符,制表符,垂直制表符或换页符,所有这些都返回真实的响应. MATLAB isspace函数.使用连接语法[s1 s2 s3 ...]来保留尾随空格.strcat不会忽略作为字符串单元格数组的输入."
gno*_*ice 22
尽管STRCAT忽略了尾随的空白区域,但它仍然保留了前导空白区域.试试这个:
strcat('red',' yellow',' white')
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用连接语法:
['red ' 'yellow ' 'white ']
Run Code Online (Sandbox Code Playgroud)
小智 14
实际上,您可以简单地使用空间的ASCII代码:32.因此,您可以像这样解决问题:
str = strcat('red', 32, 'yellow', 32, 'white');
Run Code Online (Sandbox Code Playgroud)
然后你会得到str = 'red yellow white'
.
And*_*nke 11
您可以通过将它放在单元格中来保护strcat()或类似函数中的尾随空格.
str = strcat({'red '}, {'yellow '}, {'white '})
str = str{1}
Run Code Online (Sandbox Code Playgroud)
在这个基本示例中不是很有用.但是如果你最终对字符串进行"矢量化"操作,那就很方便了.常规数组连接不执行strcat执行的1对多连接.
strs = strcat( {'my '}, {'red ','yellow ','white '}, 'shirt' )
Run Code Online (Sandbox Code Playgroud)
在单元格中粘贴'my'即使它是单个字符串也会保留空白.请注意,您必须使用{}表单而不是调用cellstr(),这将自动删除尾随空格.
这可能是因为Matlab有两种表示字符串列表的形式:作为一个cellstr数组,其中所有空格都是重要的,并作为一个空白填充的二维char数组,每行被视为一个字符串,并且尾随空格被忽略.celltr形式最像Java和C中的字符串; 如果您有许多相似长度的字符串,那么2-D char形式可以提高内存效率.Matlab的字符串操作函数在两个表示中是多态的,有时会表现出这样的差异.像'foo'这样的char字是2-D char形式的退化单字符串,Matlab的函数就是这样.
归档时间: |
|
查看次数: |
37798 次 |
最近记录: |