我目前正在研究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
部分,上述功能确实可以工作...
它还可以与一起在调试模式下正常运行。
答案 0 :(得分:2)
我遇到了同样的问题,它可以在Android的调试模式下运行,但是在不处于调试模式时就停止了,这对我来说意义不大。
我最终使用了unorm。
yarn add unorm
导入的模块
import unorm from 'unorm';
然后将 encodedFileName.normalize('NFD')替换为
unorm.nfd(encodedFileName);
在Android和iOS上运行正常。我希望它可以帮助其他人。
答案 1 :(得分:0)
如果您查看提供的链接上的文档,则表明它与Android WebView不兼容。