出现在文本区域元素中但不出现在字符串中

 appearing in textarea elements but not in string

我正在研究在文本区域内使用的自动完成功能。我知道已经创建了一些自动完成功能,但无论如何。

它运行良好,但是如果我在输入内容时 select 一个或多个字符并将其删除, 会出现在我的字符串末尾(或我之前输入的位置)在里面)。我试图在用 replaceAll 检索我的 html 时替换它,但它不起作用(当我使用 indexOf 时没有这个特殊字符)。问题是由于这个字符,他没有找到任何结果。让我们看一个例子:

这是我的数组(有点删减,但我们并不关心)

let array = [{
    name: "test",
    value: "I'm a test value"
},
{
    name: "valueorange",
    value: "I'm just an orange"
},

// This is how I get the contents of my span (I tried both innerHTML and innerText, same results). 
// Same while using .text() or .html() with jquery

let value = jqElement.find("#searching-span")[0].innerHTML.substring(1).toLowerCase();
    
value = value.replaceAll(" ", " ");
value = value.replaceAll("", "");

我可以毫无问题地更换每个  。最后我用一个循环检查每个值上是否有一些带有 indexOf 的值,如果它是 returns 任何东西,我将它推送到一个新数组中。但是当我有  我没有结果。

知道如何解决吗?

我尽量说清楚了,希望我的英语不是那么差,如果我犯了很多错误,请见谅!

字符实体和HTML转义字符如 出现在HTML源代码中由HTML parser 到 unicode 字符像 \u00a0\ufeff before 被插入到 DOM.

如果在 JavaScript 中替换它们,请使用它们的 unicode 字符,而不是 HTML 转义序列,以在 DOM 字符串中匹配它们。例如:

p.textContent = p.textContent.replaceAll("\ufeff", '*'); // zwj
p.textContent = p.textContent.replaceAll("\xa0", '-');   // nbsp
<p id="p">&#65279;&nbsp;&#65279;&nbsp;&#65279;&nbsp;</p>

请注意,零宽度连接符在表情符号字符序列中使用很多,任意删除可能破坏表情符号字符解码(尽管解码格式错误的表情符号字符串几乎是处理表情符号的先决条件在野外)。

第二个注意事项:我并不是建议将此作为一种避免使用 Unicode 转换格式编码的字符解码不当的方法。确保解码正确执行始终是更好的选择。