【问题标题】:Create single string from other strings [duplicate]从其他字符串创建单个字符串[重复]
【发布时间】:2013-07-24 23:35:24
【问题描述】:

我有一个变量,它是 listBox 句柄的字符串列表

string = get(handles.ListBox,'string');
string=
       'file1'
       'file2'

我想创建一个像这样的字符串:

line= 'file1 file2'

为了将它写在我的输出文件的一行中。输入文件的数量在每种情况下可能会有所不同,因此我想以一般方式进行。我试过 'horzcat'、'strcat' 但没有成功。

【问题讨论】:

  • 你为什么不接受答案?

标签: matlab


【解决方案1】:

有一个strjoin 函数专门用于此任务:

C = {'one', 'two', 'three'};
str = strjoin(C)

【讨论】:

  • 呸!你比我编辑早一秒!但你需要重塑我认为?如果我按原样尝试你的,我会收到错误
  • 可以使用转置S'
【解决方案2】:

最简单的方法,恕我直言,最干净的方法是用它们制作一个“矩阵”:

s1 = 'bla';
s2 = 'blabla';
scat = [ s1, s2 ];

【讨论】:

  • 似乎 OP 已经有单元格数组形式的字符串。
  • 为什么要使用 scat 变量?
  • 我的意思是变量名的选择很奇怪
  • s1 = string 1, s2 = string 2, scat = conCATenated string,创造性地派生自 C 函数 strcat。这是一个三行的 sn-p,变量名在优先级列表中并不高。
【解决方案3】:

我找到了一个不错的方法:

S = {'file1'; 'file2'};
strjoin(S(:)', ' ')

【讨论】:

  • 我认为@Mikhail 的strjoin(S') 是解决这个特定问题的正确方法。
  • 转置有什么用?我现在不在 MATLAB 附近; strjoin 要求元胞数组是行向量吗?
  • @EitanT 啊我尝试使用sprintf,但我没有想到{:} 使它不是一个单元矩阵!
  • @EitanT strjoin 似乎只需要1xN 单元矩阵...
  • 所以S(:)' 确实是您需要的:) 如果您不介意,我已经修改了您的答案。
猜你喜欢
  • 2015-05-28
  • 2019-02-05
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
相关资源
最近更新 更多