有没有办法在Javascript中将任意字符串转换为有效的文件名?
结果应尽可能贴近原始字符串,以方便人类阅读(因此slugify不是一种选择)。这意味着它只需要替换are not supported by an OS。
的字符例如:
'Article: "Un éléphant à l\'orée du bois/An elephant at the edge of the woods".txt'
→ 'Article Un éléphant à l\'orée du bois An elephant at the edge of the woods .txt'
我认为这是一个常见的问题,但我没有找到任何解决方案。我希望你能帮助我!
答案 0 :(得分:1)
var str = 'Article: "Un éléphant à l'orée du bois/An elephant at the edge of the woods".txt';
var out=(str.replace(/[ &\/\\#,+()$~%.'":*?<>{}]/g, ""));
var out=(str.replace(/[^a-zA-Z0-9]/g, ''));
答案 1 :(得分:0)
当您为变量赋值时,使用单引号',如果您的字符串中有另一个',则字符串将会中断。在声明字符串时,需要在单引号内添加反斜杠\。
但是,如果您使用的字符串来自某个地方,那么您不需要添加反斜杠,因为它可能在其他地方处理得很好。
请注意/ \:*? “&lt;&gt; |不允许使用文件名。
因此,如果已在变量中设置了值,则需要删除所有这些字符。这样做
var str = 'Article: "Un éléphant à l\'orée du bois/An elephant at the edge of the woods".txt';
str = str.replace(/[\/\\:*?"<>]/g, ""));
答案 2 :(得分:0)
非常感谢Kelvin's回答!
我很快将它编译成一个函数。我使用的最终代码是:
function convertToValidFilename(string) {
return (string.replace(/[\/|\\:*?"<>]/g, " "));
}
var string = 'Un éléphant à l\'orée du bois/An elephant at the edge of the woods".txt';
console.log("Before = ", string);
console.log("After = ", convertToValidFilename(string));
这导致输出:
Before = Un éléphant à l'orée du bois/An elephant at the edge of the woods".txt
After = Un éléphant à l orée du bois An elephant at the edge of the woods .txt