将字符串相互匹配
Match strings to each other
本文关键字:字符串 更新时间:2023-09-26
我需要将字符串与其他字符串匹配,特别是文件类型的扩展名或mime类型。例如"png"、"images/png"、"image/jpeg"应与"image"等匹配。
目前我使用的方法是:
fileFormats = {
'image/png':'image',
'image/jpeg':'image',
'png':'image',
'jpeg':'image',
'jpg':'image'
}
fileFormats["png"]
然而,随着扩展/mime类型数量的增加,这种情况可能会变得非常重复。我还认为应该有更好的方法来做这件事。有什么想法吗?
如果您从格式名称映射到mime类型和/或文件扩展名,则不应重复。然后您可以反转列表:
mimeTypes = {
'image' : ['image/png', 'image/jpeg', 'png', 'jpeg', 'jpg', ...],
'text' : [ . . .],
. . .
}
fileFormats = {};
for (type in mimeTypes) {
mimeList = mimeTypes[type];
for (i = 0, n = mimeList.length; i < n; ++i) {
fileFormats[mimeList[i]] = type;
}
}
不是真的,在某个时候你仍然需要一个字典/地图。
我的第一条评论是,不应该在同一个映射中混合MIME和文件扩展名。相反,你应该有两个地图:
extensionToMime = {};
mimeToExtension = {};
第二个注释是,一个扩展可以有多个MIME,所以extensionToMime映射的值应该是数组。
然而,如果你真的想避免使用映射(它会以O(1)btw返回结果,很难更快地完成),你仍然可以根据其扩展来制定一些规则来构建MIME类型。例如:
var simpleMimes = { "png":true, "jpeg":true, "gif":true }; // mimicking a set
// then, when you need it:
function getMimeFromExtension(ext) {
if (ext in simpleMimes) {
return "image/" + ext;
}
return extensionToMime[ext];
}
这显然不可能适用于所有扩展,并且只有当您使用少量可以像这样轻松构建的MIME时,它才有效。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 本地存储中的字符串到字节数组转换
- JavaScript按钮/输入/函数,字符串反转
- 从查询字符串参数推断出正确的数据类型
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何检查字符串的一部分与数组匹配