【问题标题】:In javascript, how can I search for "–" (en-dash)?在 javascript 中,如何搜索“-”(短划线)?
【发布时间】:2022-02-23 15:02:43
【问题描述】:

我正在使用 javascript 在 HTML 页面中搜索文本。我正在寻找的其中一件事是包含“en-dash”的 HTML 字符的行 - 在 HTML 页面中看起来像这样(它是一个项目列表,用 en dash 分隔):

项目一
项目二

第三项

如何在 Javascript 中搜索它?我尝试了以下方法,但不起作用:

itemList.search("–");
itemList.search("–");

【问题讨论】:

  • 您需要向我们展示一些代码。我们不知道itemList 是什么。另外,.search() 只适用于字符串,所以如果itemList 是一个对象,它会抛出一个错误。
  • itemList 是一个字符串。我的代码如下,它没有找到破折号,所以当它应该的时候字符串不会变成空字符串(当 itemList 包含“:”时它工作正常):if ((itemList. search("–") != -1) || (itemList.search(":") != -1)) itemList = '';

标签: javascript search


【解决方案1】:

有一个函数indexOf。这将返回您搜索的字符(或字符串)的位置,返回 -1 of 不存在。

用法:

var str = "this is a dash - ...";
alert(str.indexOf('-'));
// or
alert(str.indexOf("\u2013")); // EN DASH unicode

如果你不知道如何将 – 转换为 \u2013 你可以使用这个函数

function myUnescape(ampstr) {
  const span = document.createElement('SPAN');
  span.innerHTML = ampstr
  return span.textContent
}

myUnescape('&#8211') -> '-'
escape(myUnescape('&#8211')) -> '%u2013'

【讨论】:

  • 不是所有浏览器都支持indexOf
  • 您使用的是常规破折号,效果很好。我正在寻找一个破折号。它在 HTML 代码中显示为字符串:–
【解决方案2】:

搜索是每个字符串对象都可用的功能。它返回匹配的位置,如果没有找到 -1。

所以 "abc-de".search("-"); 返回 3,因为它位于位置 0123。

http://www.w3schools.com/jsref/jsref_search.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多