【问题标题】:Matlab strcat function troubles with spacesMatlab strcat函数有空格问题
【发布时间】:2010-11-28 08:31:00
【问题描述】:

我正在努力做到这一点:

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

我希望看到“redyellowwhite”,但是,我在命令输出中看到了“redyellowwhite”。需要做什么来确保正确连接空间?提前致谢。

【问题讨论】:

  • @#$@!#$@! Matlab 和 C 之间的另一个问题。>:(
  • 快速解决方法:cstrcat("he ", " l ", " lo"),保留空格。来源:stackoverflow.com/a/14025999/445131
  • Matlab 中有这么多愚蠢的设计决策,但没想到这么简单的事情也会成为问题!

标签: matlab strcat


【解决方案1】:

其实你可以简单的使用空格的ASCII码:32。所以,你可以这样解决问题:

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

然后你会得到str = 'red yellow white'

【讨论】:

  • 哇,这很有趣,尽管strcat('red', ' ', 'yellow', ' ', 'white') 删除了空格...
【解决方案2】:

您可以通过将 strcat() 或类似函数放在单元格中来保护尾随空格。

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

在这个基本示例中不是很有用。但是,如果你最终对字符串进行“矢量化”操作,它就很方便了。常规的数组连接不像 strcat 那样做一对多的连接。

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

即使是单个字符串,在单元格中粘贴 'my' 也会保留空格。请注意,您必须使用 {} 形式而不是调用 cellstr(),它本身会去除尾随空格。

这可能是因为 Matlab 有两种表示字符串列表的形式:作为 cellstr 数组,其中所有空格都很重要,以及作为空白填充的二维 char 数组,每一行都被视为一个字符串,以及尾随空格被忽略。 cellstr 形式最类似于 Java 和 C 中的字符串;如果您有许多长度相似的字符串,则 2-D char 形式的内存效率更高。 Matlab 的字符串操作函数在这两种表示上是多态的,有时会表现出这样的差异。像 'foo' 这样的 char 文字是 2-D char 形式的退化单字符串情况,Matlab 的函数就是这样处理的。

【讨论】:

  • 太棒了,当我想用​​' ' 字符连接多个字符串元胞数组时,这对我很有帮助:dateTime{:} = strcat(date, {' '}, time)
  • 这也帮助我保留了空白。知道的好技巧。顺便说一句,对于 MATLAB 标记,您非常接近(如果还没有的话)1k。提前恭喜你获得金牌 :)
  • 很棒的提示。我只是在找这个。
【解决方案3】:

虽然STRCAT 忽略尾随 空格,但它仍然保留前导 空格。试试这个:

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

或者,您可以只使用连接语法:

['red ' 'yellow ' 'white ']

【讨论】:

    【解决方案4】:

    或者你可以说:

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

    【讨论】:

      【解决方案5】:

      来自 strcat 的 matlab 帮助页面:

      "strcat 忽略尾随的 ASCII 空白字符并从输出中省略所有此类字符。ASCII 中的空白字符是空格、换行符、回车符、制表符、垂直制表符或换页符,所有这些都返回 true来自 MATLAB isspace 函数的响应。使用连接语法 [s1 s2 s3 ...] 保留尾随空格。strcat 不会忽略作为字符串元胞数组的输入。"

      【讨论】:

        猜你喜欢
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 2014-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多