如果在Matlab中找不到文本,请用错误消息替换文本

时间:2019-02-19 11:47:11

标签: matlab replace

我有一个替换文本的函数,因此该函数需要发出错误以防万一,这很相关。

一种方法是:

text_var = 'The whole big text';
if(~contains(text_var,'The part that will be replaced')))
     throw(MException('MF:error','The part to be replaced is not in the text!'))
else
     text_var = strrep(text_var,'The part that will be replaced','The replacement');
end

但是,这似乎并不有效。我可以假设该文本(如果出现)仅执行一次。但我想对在text_var上运行的函数进行一次调用。如果替换失败,Matlab中是否没有文本替换功能会返回错误?

1 个答案:

答案 0 :(得分:1)

您可以进行替换,只需检查新字符串的长度是否不变(假设原始字符串和替换字符串的长度不同)

enter

如果您不能做这个假设,则可以使用text_var = 'the whole big text'; n = numel( text_var ); text_var = strrep( text_var, 'replace me', 'with this' ); if numel( text_var ) == n error( 'No replacements made' ); end 来获取字符串的索引。如果未找到,则会为空(错误),也可以使用它手动删除字符串。如您所说的那样,它最多显示一次。

strfind

由于只匹配一次,所以可能发现text_var = 'the whole big text'; removeStr = 'replace this'; k = strfind( text_var, removeStr ); if isempty( k ) error( 'No replacements made' ); end text_var( k:k+numel(removeStr)-1 ) = []; % Remove string regexp快,因为可以使用{{ 1}},使其在第一场比赛中停止

strfind