【问题标题】:How to add \ before all special characters in MATLAB?如何在MATLAB中的所有特殊字符之前添加\?
【发布时间】:2016-10-07 22:37:23
【问题描述】:

我正在尝试在 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\!'

【问题讨论】:

  • 定义“特殊字符”。您似乎将“,”视为一个而不是“!”

标签: matlab


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我使用了 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')
    

    【讨论】:

    • 这对莫莉很有帮助。感谢您的答复。我想知道这可以使用 regexprep 轻松完成。
    • 那应该是..., '\\$1');,否则你会转义美元符号。
    • answer 可以替换为 regexprep oneliner。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    相关资源
    最近更新 更多