如何将带有\的字符串路径转换为\\?

Posted

技术标签:

【中文标题】如何将带有\\的字符串路径转换为\\\\?【英文标题】:How to convert string path with \ to \\?如何将带有\的字符串路径转换为\\? 【发布时间】:2019-01-04 23:41:26 【问题描述】:

我使用 jquery 来获取 html img 元素的路径,如下所示:

path = $("#img_elemnt_id).attr('src')

它给了我一个字符串

path = "C:\User\pic.jpg"

我需要在函数中使用该字符串,但它只有在路径像这样时才有效

path ="C:\\User\\pic.jpg"

知道怎么做吗?

更新:您的答案无效。

path = "C:\\User\\pic.jpg"

在函数中有效,但您的答案无效。

path = "C:\User\pic.jpg"
path = path.replace('\\,'\\\\')
console.log(path)

输出

C:Userpic.jpg

【问题讨论】:

您是否尝试过将函数与检索到的path 一起使用?它应该可以工作,因为 '\' 已经被转义并准备好了。 @ASDFGerte 我不认为这是对这个新创建的帖子投反对票的好理由。 src 元素中不应包含 C:\。使用正确的file:// 路径。 @ibrahimmahrir 喜欢回答这个问题。祝你好运。你会需要它。 A) 放松一下,全大写只是烦人。 B) 你需要给我们一个你正在尝试做的例子,包括特定的 HTML 和 javascript。我们只是想提供帮助,但您并没有特别愿意提供细节。 【参考方案1】:

使用replace

path = path.replace(/\\/g, "\\\\");

我进行了编辑以包含全局“g”标志,以使其成为正确的解决方案。

【讨论】:

唯一真正的问题是它只替换第一次遇到的代码。对于除非您在循环中调用它否则不起作用的目录分隔符。 我添加了所需的全局标志来纠正问题,谢谢@Igor【参考方案2】:

var path = 'C:\\User\\pic.jpg';
console.log(path);
path = path.replace(/\\/g,'\\\\');
console.log(path);

如果路径包含单个反斜杠字符,则这些字符将与它们后面的字符一起被视为转义序列。

【讨论】:

【参考方案3】:

这里的缺陷是你一开始就声明你的字符串是错误的:

path = "C:\User\pic.jpg"
console.log(path)
// => C:Userpic.jpg

已经在这一点上被打破了。你必须在第一次正确表达 place 或反斜杠会破坏:

path = "C:\\User\\pic.jpg"
console.log(path)
// => C:\User\pic.jpg

这是因为\U\p 被解释为文字 up。超出这一点,就无法恢复“丢失”的字符,因为这就是 JavaScript 字符串语法的工作方式。第二个版本使用\\,它是文字反斜杠,可以避免这个问题。

如果您是从 HTML 元素中提取它,那就另当别论了。当且仅当您首先正确地提供了src 属性时,才应正确编码反斜杠。

如果您使用 file:// 路径说明符,您可以使用正斜杠而不是反斜杠,并避免我强烈建议您这样做的所有这些混乱。

编辑

现在,如果您无法控制 src 属性,这是首先应该正确设置的地方,您可以尝试修复它:

path = 'path:///' + $('id').attr('src').replace(/\\/, '/');

【讨论】:

以上是关于如何将带有\的字符串路径转换为\\?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有类名的字符串转换为类类型本身?

如何将带有数组的字符串转换为数组[重复]

如何将带有$ sing的字符串转换为int

如何将带有对象数组的 json 字符串转换为带有 nsdictionaries 的 nsarray - IOS

如何将字符串转换为带有时区的时间戳?

如何使用 Cloudinary 将带有转换的 url 输出为字符串?