【问题标题】:Deleting underscores at the end of string Matlab删除字符串末尾的下划线 Matlab
【发布时间】:2014-07-24 15:12:33
【问题描述】:

我有一个字符串数组

Str_in = {'ab_cd_a9_b5__','ab_cd_r_','ef_g','3swe_4r_2345___','swe','eds______'};

如何删除上述字符串数组中的尾随下划线。每个字符串的长度不是恒定的,下划线的数量可能会有所不同。预期的输出字符串是

Str_out = {'abcda9_b5','ab_cd_r','ef_g','3swe_4r_2345','swe','eds'};

有人能帮忙解决这个问题吗?

【问题讨论】:

  • 如果您总是希望字符串的第一部分具有相同的长度,您可以简单地采用这些字符。例如,Str_out = cellfun(@(x) x(1:5), Str_in, 'UniformOutput', false)
  • 是的,下划线的数量可能会有所不同。请检查已编辑的问题

标签: string matlab


【解决方案1】:

使用正则表达式替换这些字符很方便。尾随_的模式是('_'的个数大于等于1):

_+$ 

所以代码是:

Str_in = {'ab_cd_a9_b5__','ab_cd_r_','ef_g','3swe_4r_2345___','swe','eds______'};    

Str_out = cellfun(@(x) regexprep(x, '_+$', ''), Str_in, 'UniformOutput', false);

% or do as Shai mentioned, 
Str_out = regexprep(Str_in, '_+$', '');

disp(Str_out);

输出:

  'ab_cd_a9_b5'    'ab_cd_r'    'ef_g'    '3swe_4r_2345'    'swe'    'eds'

【讨论】:

  • regexprep 可以将字符串元胞数组作为输入。这里不需要cellfunStr_out = regexprep( Str_in, '_+$', '' ) 就可以了。
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
相关资源
最近更新 更多