首页 > 解决方案 > 替换字符串中的坏字符 Matlab

问题描述

我尝试创建一个在参数中采用 char 的函数:

function replaceBadCharacters(name)

    BadChar = '<>:"/\|?*';
    bad = ismember(BadChar, name);
    if contains(name, ' ') || any(BadChar)
        name = strrep(name, ' ', '_'); 
        name = strrep(name, BadChar(bad), '_'); 
    end
end

我想从 char中替换spaceand并将其替换为. 但是我的功能不起作用。BadChar_

例如我有一个字符Manager principal或者Manager/principal我想把它改成Manager_principal

感谢您的帮助。

标签: matlabreplacecharacter

解决方案


编辑:如gehbiszumeis 的回答中所述,实际问题是缺少返回值。我很抱歉没有一开始就指出这一点。


您的功能可以简化为:

function name = replaceBadCharacters(name)

  BadChar = '<>:"/\|?* ';
  bad = ismember(name, BadChar);
  name(bad) = '_';

end

您可以简单地将“空格”添加到您的BadCharchar 数组中。另外,请查看Indexing with Logical Values

一些测试:

>> replaceBadCharacters('Manager principal')
ans = Manager_principal

>> replaceBadCharacters('Manager/principal')
ans = Manager_principal

>> replaceBadCharacters('Manager?principal')
ans = Manager_principal

推荐阅读