3

我正在尝试在 MATLAB 中的字符串中的所有特殊字符之前添加“\”,有人可以帮帮我吗?这是示例:

tStr = 'Hi, I'm a Big (Not So Big) MATLAB addict; Since my school days!';

我希望将此字符串更改为:

'Hi\, I\'m a Big \(Not so Big \) MATLAB addict\; Since my school days\!'
4

2 回答 2

11

Matlab 中的转义字符是单引号 ('),而不是 C 语言中的反斜杠 (\)。因此,您的字符串必须是这样的:

tStr = 'Hi\, I\''m a Big (Not so Big ) MATLAB addict\; Since my school days!'
于 2013-03-18T21:06:54.737 回答
5

我使用了 Mathworks 网页上定义的特殊字符列表来执行此操作:

special = '[]{}()=''.().....,;:%%{%}!@';

tStr = 'Hi, I''m a Big (Not So Big) MATLAB addict; Since my school days!';

outStr = '';
for l = tStr
    if (length(find(special == l)) > 0)
        outStr = [outStr, '\', l];
    else
        outStr = [outStr, l];
    end
end

这将自动添加那些\s。您确实需要使用两个单引号 ('') 代替输入字符串中的撇号。如果 tStr 是通过函数 input() 或类似函数获得的,那么这个过程仍然有效。

编辑:

或者使用正则表达式:

regexprep(tStr,'([[\]{}()=''.(),;:%%{%}!@])','\\$1')
于 2013-03-18T21:25:18.950 回答