首页 > 解决方案 > 如何以角度检测 Unicode 字符 u+21b5?

问题描述

标签: angular

解决方案


正则 indexOf 只接受一个字符串参数,没有正则表达式。

const arr = ["Title", "First", "Last", "Email", "↵"];
arr.indexOf('\u21b5'); // 4

要使用正则表达式,您必须使用该find方法。请注意,要让 Java-/Typescript 解析正则表达式中的 unicode 字符,您需要使用u标志 -另请参阅this,取自此答案

const char = arr.find(item => /\u{21b5}/u.test(item));
if (char) {
    result = arr.indexOf(char); // 4
}

您还可以编写一个自定义的启用 RegEx 的 indexOf 函数:

function regExIndexOf(array: string[], term: RegExp, start = 0): number {
  let result = -1;
  array.forEach((item, index) => {
    if (result === -1 && index >= start && term.test(item)) {
      result = index;
    }
  });
  return result;
}

regExIndexOf(["Title", "First", "Last", "Email", "↵"], new RegExp('Title')); // 0
regExIndexOf(["Title", "First", "Last", "Email", "↵"], new RegExp('Title'), 1); // -1
regExIndexOf(["Title", "First", "Last", "Email", "↵"], new RegExp('\u{21b5}', 'u')); //4

见打字稿游乐场


推荐阅读