【发布时间】:2020-01-29 05:29:06
【问题描述】:
我正在尝试从字符串中过滤掉特定字符。我认为这不需要太多介绍,所以这里有一些例子。
const filt1 = "This will not be replaced: æ Ç ü";
const filt2 = "This will be replaced: » ↕ ◄";
// Output goal:
// filt1 = This will not be replaced: æ Ç ü
// filt2 = This will be replaced:
我该怎么做呢?我想替换所有未在任何语言中使用的字符。
我想保留重音字符和中文字符之类的内容。
箭头、方块等应该被过滤掉。
我尝试了许多正则表达式过滤器,但没有一个能达到我想要的效果。 这个效果最好:
((?![a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇߨøÅ寿œ ]).)*
但它体积庞大,并且不包含非重音字母数字字符。
抱歉,如果这篇文章的措辞难以阅读。我已经有一段时间了,我的大脑功能不正常。
【问题讨论】:
-
我认为没有任何算法可以确定您做什么和不想保留什么,因此唯一的方法是蛮力列出您想要保留在一个巨大的字符串/数组中的内容。你可以检查几十种语言的代码页,看看是否能找到任何基于字符代码的算法,但除非你将自己限制在几种语言,否则我怀疑你会找到算法捷径。
-
这是我最初的想法,但它看起来很笨重。如上所示,很容易做到,但感觉效率不高。
-
您是否检查了所有您关心的代码页并查看您想要保留的字符是否遵循其字符代码的某种模式?这是我看到的唯一可能。但是,如果你要学习中文,而不仅仅是浪漫语言,那就不太可能了。
-
@jfriend00 即使只包含西里尔字母也开始使其成为主要痛苦,添加中文、韩文、日文等将无法维护。
-
@VLAZ - 是的,我就是这么想的。我想我会回到真正的问题所在并寻找不同的方法。
标签: javascript node.js regex