react native是否支持Javascript的normalize函数?

时间:2019-02-09 01:51:35

标签: validation react-native normalize

我目前正在研究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部分,上述功能确实可以工作...

它还可以一起在调试模式下正常运行。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,它可以在Android的调试模式下运行,但是在不处于调试模式时就停止了,这对我来说意义不大。

我最终使用了unorm

yarn add unorm

导入的模块

import unorm from 'unorm';

然后将 encodedFileName.normalize('NFD')替换为

unorm.nfd(encodedFileName);

在Android和iOS上运行正常。我希望它可以帮助其他人。

答案 1 :(得分:0)

如果您查看提供的链接上的文档,则表明它与Android WebView不兼容。