如何将带有\的字符串路径转换为\\?
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
被解释为文字 u
和p
。超出这一点,就无法恢复“丢失”的字符,因为这就是 JavaScript 字符串语法的工作方式。第二个版本使用\\
,它是文字反斜杠,可以避免这个问题。
如果您是从 HTML 元素中提取它,那就另当别论了。当且仅当您首先正确地提供了src
属性时,才应正确编码反斜杠。
如果您使用 file://
路径说明符,您可以使用正斜杠而不是反斜杠,并避免我强烈建议您这样做的所有这些混乱。
编辑:
现在,如果您无法控制 src
属性,这是首先应该正确设置的地方,您可以尝试修复它:
path = 'path:///' + $('id').attr('src').replace(/\\/, '/');
【讨论】:
以上是关于如何将带有\的字符串路径转换为\\?的主要内容,如果未能解决你的问题,请参考以下文章