【问题标题】:Does clojure have raw string?clojure 有原始字符串吗?
【发布时间】:2012-06-18 02:08:50
【问题描述】:

在 Python 中,我可以在字符串文字(原始字符串)前加上 r,以告诉解释器不要翻译字符串中的特殊字符:

>>> r"abc\nsdf#$%\^"
r"abc\nsdf#$%\^"

有没有办法在 Clojure 中做同样的事情?

【问题讨论】:

    标签: clojure escaping rawstring


    【解决方案1】:

    Clojure 字符串是 Java 字符串,读者不会对其解释添加任何重要内容。 The reader page 只是说“支持标准 Java 转义字符”。

    您可以转义 \

    user> (print "abc\\nsdf#$%\\^")
    abc\nsdf#$%\^
    

    这只会影响阅读器读取的字符串文字,因此如果您从文件中读取字符串,阅读器永远不会看到它们:

    user> (spit "/tmp/foo" "abc\\nsdf#$%\\^")
    nil
    user> (slurp "/tmp/foo")
    "abc\\nsdf#$%\\^"
    user> (print (slurp "/tmp/foo"))
    abc\nsdf#$%\^nil
    user> 
    

    所以,我认为基本答案是否定的。

    【讨论】:

      【解决方案2】:

      还请注意,如果您使用逆时针(Clojure 的 Eclipse 插件),则有一种称为“智能粘贴”(默认禁用)的模式,当您粘贴到现有的文字字符串。

      【讨论】:

        【解决方案3】:

        可能对用于此类目的的文字正则表达式有用。

        user=> #"abc\nsdf#$%\^"
        #"abc\nsdf#$%\^"
        user=> (type #"abc\nsdf#$%\^")
        java.util.regex.Pattern
        user=> (println (str #"abc\nsdf#$%\^"))
        abc\nsdf#$%\^
        nil
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-05
          • 2011-03-31
          • 1970-01-01
          • 2019-11-02
          相关资源
          最近更新 更多