从 MATLAB 中字符串的开头和结尾删除 '''

Posted

技术标签:

【中文标题】从 MATLAB 中字符串的开头和结尾删除 \'\'\'【英文标题】:Remove ''' from beginning and end of the strings in MATLAB从 MATLAB 中字符串的开头和结尾删除 ''' 【发布时间】:2015-08-11 21:20:03 【问题描述】:

我们如何在 MATLAB R2015a 的元胞数组中从字符串的开头和结尾删除 '''?假设我们有这个元胞数组:

当我们打开其中一个单元格时,我们会看到:

我想将整个单元格数组转换为双精度(数字)。假设输出元胞数组是final。使用cellfun(@str2double,final) 为所有单元格返回Nanstr2double(final) 也返回 Nan

附言。

命令提示符中final 的最后10 个元素具有以下结构:

 ans = 
    ''2310''
    ''2319''
    ''2313''
    ''2318''
    ''2301''
    ''2302''
    ''2303''
    ''2312''
    ''2304''
    ''2309''

【问题讨论】:

@rayryeng 。您提出的重复答案在这里不起作用。有什么建议或提示吗? 为什么它不起作用?用您的尝试更新您的帖子,并向我们展示出了什么问题。我们不是读心术。如果您可以将您的数据发布到某个地方供我们查看,那也将是卓有成效的。 如果你得到NaN,那么你的元胞数组不是你说的那样。请向我们展示当您执行 final(1:20) 时的输出,例如在 MATLAB 命令提示符中。请不要向我们提供您工作区的屏幕截图。 谢谢。帖子已更新。 重新打开,我已经给出了答案。祝你好运! 【参考方案1】:

您可以用任何内容替换所有撇号字符,然后将str2double 应用于元胞数组中的每个元胞。

鉴于您的单元格存储在final,请执行以下操作:

final_rep = strrep(final, '''', '');
out = cellfun(@str2double, final_rep);

基本上,使用strrep 将所有撇号字符替换为空,然后通过cellfunstr2double 应用于单元格数组中的每个单元格。

鉴于你上面的例子:

final = '''2310'''
'''2319'''
'''2313'''
'''2318'''
'''2301'''
'''2302'''
'''2303'''
'''2312'''
'''2304'''
'''2309''';

我们现在得到了这个:

>> out =

        2310
        2319
        2313
        2318
        2301
        2302
        2303
        2312
        2304
        2309

>> class(out)

ans =

double

如您所见,数组的输出是double,正如我们所料。

【讨论】:

以上是关于从 MATLAB 中字符串的开头和结尾删除 '''的主要内容,如果未能解决你的问题,请参考以下文章

如何从字符串的开头和结尾删除换行符?

急!如何批量删除数据库中以特定字符开头和结尾的字符串

JavaScript 正则表达式 - 从开头和结尾删除空格

matlab 去掉字符串前后的空格

GNU R:如何在字符串的每个单词的开头和结尾删除重复的字符?

正则表达式替换为结尾和开头没有空格的字符串