【问题标题】:Javascript single backslash in string variable not working [duplicate]字符串变量中的Javascript单反斜杠不起作用[重复]
【发布时间】:2021-10-08 20:24:04
【问题描述】:

我正在从 Spring Boot 控制器向 JavaScript 发送一个字符串变量,我的字符串基本上是一个带有单个反斜杠的文件路径。我正在阅读 JavaScript 中的路径,但它已准备好单反斜杠作为转义字符或其他东西。

<script type="text/javascript">
    var path = "S:\\CD\2020\ABCDEF"
    alert(path)
</script>

我得到的输出是警报中的 S:\CD‚0ABCDEF

我想要“S:\CD\2020\ABCDEF”

【问题讨论】:

    标签: javascript html variables web web-deployment


    【解决方案1】:

    在 JavaScript 中,\ 是一个转义字符,用于表示特殊序列的开始。

    这些序列包括\n、\t 甚至 Unicode 字符。当您想单独使用\ 字符时,请像这样写两个\\。

    所以在你的情况下:

    • 我们可以使用String.raw 来阻止 JavaScript 解析转义序列。
    • 还有.replaceAll 以更改所有出现的\\ 序列。

    var path = String.raw`S:\\CD\2020\ABCDEF`
    
    let singular = (String.raw`\a`).slice(0, 1)
    let double = String.raw`\\`
    
    path = path.replaceAll(double, singular)
    
    alert(path)

    作为一个函数:

    function getString() {
       return String.raw `S:\\CD\2020\ABCDEF`
    } // This function can be replaced with the function you are using to get the path from the user.
    
    function replaceEscapes(rawString) {
      let singular = (String.raw `\a`).slice(0, 1)
      let double = String.raw `\\`
    
      return rawString.replaceAll(double, singular)
    }
    
    alert(
      replaceEscapes(getString())
    )

    【讨论】:

    • 我从 Spring Boot 控制器获取这个变量,我无法控制这个变量。我不能直接改变它。
    • 有没有办法使用替换功能,用双反斜杠替换单反斜杠?
    • @MutahirKiani 我已经对我的帖子进行了编辑,这应该可以让您以编程方式替换字符。
    • 谢谢,这解决了我的问题。祝你有美好的一天:)
    • @MutahirKiani 没问题 ?,如果有效,请确保将解决方案标记为已接受。
    【解决方案2】:

    你需要做的

    var path = "S:\\CD\\2020\\ABCDEF"
    

    反斜杠是转义字符,因此您需要转义反斜杠。

    如果你不控制它,尝试像这样使用String.raw:

    alert(String.raw`S:\\CD\2020\ABCDEF`)

    【讨论】:

    • 我从 Spring Boot 控制器获取这个变量,我无法控制这个变量。我不能直接改变它。
    • 你可以试试String.raw,见编辑
    • 有没有办法使用替换功能,用双反斜杠替换单反斜杠?
    • 问题是字符串本身实际上并没有反斜杠,一旦它在变量中,你需要在它之前它“成为”一个变量跨度>
    • String.raw 也不起作用,现在它正在显示警报
    【解决方案3】:

    \ 用于转义字符。添加一个额外的\ 以通过它:

    var path = "S:\\C\\2020\\ABCDEF"
        alert(path)

    【讨论】:

    • 我从 Spring Boot 控制器获取这个变量,我无法控制这个变量。我不能直接改变它。
    • 在你的前端改变它吧?制作一个副本并添加额外的``。这不可能吗?
    • 有没有办法使用替换功能,用双反斜杠替换单反斜杠?
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2019-09-28
    相关资源
    最近更新 更多