在字符串中转义反斜杠 - javascript

Posted

技术标签:

【中文标题】在字符串中转义反斜杠 - javascript【英文标题】:Escaping backslash in string - javascript 【发布时间】:2012-01-26 22:48:35 【问题描述】:

我需要显示当前选定文件的名称(在<input type="file"> 元素中)。

一切都很好,唯一的问题是我得到了这种字符串 "C:\fakepath \typog_rules.pdf"(浏览器自动将其作为输入元素的值)。

当我尝试通过'\''\\' 拆分字符串时,由于未转义的斜杠而失败。尝试匹配/替换斜线也失败了。有没有解决的办法?我需要它至少在 Opera 和 IE 中工作(因为在其他浏览器中我可以使用 FileReader)

例如我得到“C:\fakepath\typog_rules.pdf”作为输入,并希望得到“typog_rules.pdf”作为输出。

【问题讨论】:

你能告诉我们你得到的代码和错误吗? 这能回答你的问题吗? javascript backslash (\‌) in variables is causing an error 【参考方案1】:

转义反斜杠字符。

foo.split('\\')

【讨论】:

糟糕,不确定这是否是问题所在。看起来 OP 已经尝试过了(我正在查看问题的来源 - 并对其进行了编辑以清楚地显示它)【参考方案2】:

出于安全原因,无法通过<input type="file" /> 元素获取文件的真实完整路径。

This question 已经提到,并链接到有关此主题的其他 Stack Overflow 问题。


以前的答案,留作参考,供以后通过标题、标签和问题访问此页面的访问者参考。 必须转义反斜杠。
string = string.split("\\");

在 JavaScript 中,反斜杠用于转义特殊字符,例如换行符 (\n)。如果要使用文字反斜杠,则必须使用双反斜杠。

因此,如果要匹配两个反斜杠,则必须使用四个反斜杠。例如,alert("\\\\") 将显示一个包含两个反斜杠的对话框。

【讨论】:

没有帮助。您无法控制浏览器为您提供的 input[file] 值。 "C:\fakepath \typog_rules.pdf".split("\\"); => ["C:akepath ypog_rules.pdf"] @user1113690 你想要什么?将"C:\\fake\\path\\file" 拆分为["C:", "fake", "path", "file"]?您必须澄清您的问题,并添加当前输出、实际输入、预期输出和相关代码。 我将“C:\fakepath\typog_rules.pdf”作为输入并希望将“typog_rules.pdf”作为输出。 啊哈 - 这是预期的行为。显然,出于安全原因,一段 JavaScript 可以获取文件的完整路径是不可取的。总而言之,不可能在 <input type=file> 元素中获取文件的完整路径 @Pankaj:你还是弄错了,字符串的内存表示永远不会被转义。转义是序列化的问题。 .val() 返回未转义的字符串。不正确的是,打印时,字符串的打印值可能不会往返,因为字符串文字需要转义。【参考方案3】:

我认为这更接近您正在寻找的答案:

<input type="file">

$file = $(file);
var filename = fileElement[0].files[0].name;

【讨论】:

如果我有这样的字符串 "FILEUPLOADS\city_sri\src\com\travelocityapp22\commonmodule\dto" 那么如何使用 '\' 分割它们【参考方案4】:

向元素添加一个输入 id 并执行类似的操作:

document.getElementById('inputId').value.split(/[\\$]/).pop()

【讨论】:

【参考方案5】:

有点hacky,但它有效:

const input = '\text';
const output = JSON.stringify(input).replace(/((^")|("$))/g, "").trim();

console.log( input, output );
//  input: '\text', output: '\\text' 

【讨论】:

以上是关于在字符串中转义反斜杠 - javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中转义反斜杠?

在选择器中转义反斜杠

我需要在配置文件中转义反斜杠吗?

在 shell 中的双引号字符串中转义反引号

PHP基础

如何在 sed 中转义斜杠和双引号和单引号?