反应原生是否支持Javascript的规范化功能?

问题描述 投票:1回答:2

我目前正在研究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功能。

validation react-native normalize
2个回答
2
投票

我遇到了同样的问题,它在调试模式下在Android上工作,但在不在调试模式时停止,这对我来说没什么意义。

我最终使用unorm

yarn add unorm

进口模块

import unorm from 'unorm';

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

unorm.nfd(encodedFileName);

适用于Android和iOS。我希望它可以帮助别人。


0
投票

如果你查看你提供的链接上的文档,它说它与Android WebView不兼容。

© www.soinside.com 2019 - 2024. All rights reserved.