在字符串中转义反斜杠 - 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的主要内容,如果未能解决你的问题,请参考以下文章