Javascript 错误处理特殊字符†

Javascript mishandling special character †

提问人:Christophe Caron 提问时间:7/22/2023 最后编辑:Christophe Caron 更新时间:7/22/2023 访问量:54

问:

在 中,我想标识最后一个“†”字符的位置。textarea

var textField = document.getElementById("main_field"); 

console.log(textField.value.indexOf("†"));
<textarea id="main_field">Text † entered by user † †</textarea>

虽然这在这里效果很好,但我在浏览器中得到奇怪的结果

但是,它找不到字符并返回 -1。

我试图理解角色的内在表现。它在控制台中输出为“‡”,我觉得这很奇怪。

JavaScript 字符串 解析 文本

评论

2赞 Jaromanda X 7/22/2023
但是 !==
0赞 trincot 7/22/2023
请提供允许重现问题的代码,即添加相关的 HTML、初始化代码(设置 、、文本字段的内容等)以及在不应该输出 -1 时输出 -1 的代码。startPostextField

答:

0赞 Lajos Arpad 7/22/2023 #1

首先,让我们看看它是如何工作的。

console.log(document.getElementById("textField1").value.lastIndexOf("†"));
console.log(document.getElementById("textField2").value.lastIndexOf("†"));
<textarea id="textField1" value="a†b†c†d"></textarea>
<textarea id="textField2">a†b†c†d</textarea>

现在我们已经看到了这一点,我们需要找出你的代码有什么问题。首先,您需要检查是否包含您正在搜索的字符。接下来,在代码中查看此调用:textField.value

.substring(0, startPos)

这实际上是从一开始直到 .从的名称来看,似乎不是在你想从中获取字符串之前获取字符串。startPosstartPosstartPosstartPos

评论

0赞 Lajos Arpad 7/22/2023
我希望在反对票的同时发表评论,这样我就可以改进答案可能存在的任何缺点。谢谢!