我有一个替换文本的函数,因此该函数需要发出错误以防万一,这很相关。
一种方法是:
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中是否没有文本替换功能会返回错误?
答案 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