我目前正在研究react本机应用程序,并正在进行一些文件名清理。我注意到某些文件上传已失败,因为名称中带有重音符号的字符。我开始使用normalize函数删除特殊字符,因为正则表达式本身不够,但是android上似乎不支持该函数。
例:
sanitizeFileName(fileName) {
let encodedFileName = fileName || "upload";
encodedFileName = encodedFileName.normalize('NFD');
encodedFileName = encodedFileName.replace(/[^a-zA-Z0-9]/g,'_');
return encodedFileName;
}
这是错误抛出一个android:
TypeError: undefined is not a function (evaluating 'o.normalize('NFD')'
由于某种原因,上述功能在iOS上按预期工作。查看normalize的文档,它表示Node.js支持它
我想知道可能不支持'NFD'选项或类似的东西?
如果我删除normalize
部分,上述功能确实有效...
它也适用于调试模式下的normalize功能。
我遇到了同样的问题,它在调试模式下在Android上工作,但在不在调试模式时停止,这对我来说没什么意义。
我最终使用unorm。
yarn add unorm
进口模块
import unorm from 'unorm';
然后替换encodedFileName.normalize('NFD')
unorm.nfd(encodedFileName);
适用于Android和iOS。我希望它可以帮助别人。
如果你查看你提供的链接上的文档,它说它与Android WebView不兼容。