JavaScript Unicode匹配

时间:2018-09-24 14:31:24

标签: javascript unicode

我正在使用Node.js从XML文件读取数据。但是,当我尝试将文件中的数据与文字进行比较时,即使看起来相同,它也不匹配:

  const parser: xml2js.Parser = new xml2js.Parser();
  const suggestedMatchesXml: any
    = fs.readFileSync(`${inputSuggMatchXmlFile}`, 'utf8');
  parser.parseString(suggestedMatchesXml, (_parseErr: any, result: any) => {
    // console.debug(`result = ${util.inspect(result, false, null)}`);
    suggestedMatchesObjFromXml = JSON.parse(JSON.stringify(result));
    // console.debug(`suggestedMatchesObjFromXml BEFORE = ${JSON.stringify(suggestedMatchesObjFromXml)}`);
  });
  const destinations: Array<any> = suggestedMatchesObjFromXml.suggestedmatches.destination;
  let docIdForUrl: string | undefined;
  _.each(destinations, (destination: any) => {
    const { url }: { url: string } = destination;
    if (!destination.docId) {
      console.debug(`processInputSmXmlFile(): url = ${url} ; index = ${_.indexOf(url, 'meetings')}`);

这是日志:

processInputSmXmlFile(): url = https://apps.na.collabserv.com/meetings/ ; index = -1

我不确定这怎么会发生,除非这些字符串之一是unicode,而另一个则不是。

如何转换这种方式,以便数据匹配?

1 个答案:

答案 0 :(得分:1)

因为我正在做JSON.parse(),所以url不是字符串-它是一个对象。当我执行_.toString(url)并将_.indexOf(url, 'meetings')替换为_.includes(url, 'meetings')时(由于Lodash indexOf()仅用于数组),现在一切正常。