String 删除字符串末尾的下划线

String 删除字符串末尾的下划线,string,matlab,String,Matlab,我有一个字符串数组 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'}; 有人能帮上忙吗?使用正则表达式替换这些字符很方便。尾随u的模

我有一个字符串数组

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'};

有人能帮上忙吗?

使用正则表达式替换这些字符很方便。尾随u的模式为('u'的数量大于或等于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'

如果您总是希望字符串的第一部分具有相同的长度,那么只需使用这些字符即可。例如,
Str_out=cellfun(@(x)x(1:5),Str_in,'UniformOutput',false)
yes下划线的数量可能会有所不同。请检查编辑的问题
regexprep
是否可以将字符串的单元格数组作为输入。无需使用
cellfun
这里:
Str\u out=regexprep(Str\u in,'.+$,'')
就可以了。
  'ab_cd_a9_b5'    'ab_cd_r'    'ef_g'    '3swe_4r_2345'    'swe'    'eds'