从生产中不起作用的字符串中提取数字

Extracting numbers from a string not working in production

我在从 React 中的字符串中提取数字时遇到问题。我使用的解决方案在本地机器上运行良好,但在投入生产时无法按要求运行。我尝试了 netlify 和 heroku 但得到了相同的结果。

我从一个文本文件中获取数据,该文件包含每个标题的内容列表和更多详细信息。 Link 到文本文件在这里:Link to text file from where I am fetching the data

例如:

  1. 游戏概念 100. 一般 101. 魔法黄金法则
  2. 卡片部分 200.一般 201.姓名
  3. 卡片类型300.一般301.神器

因此,我将主要标题分开,即 1. 游戏概念,2. 卡牌的组成部分,3. 卡牌类型和副标题,即 100. 通用,101. 魔法黄金法则,200. 通用,201。名称,300。一般,301。工件等...来自该文本文件。

正如我之前提到的,我尝试的方法在本地机器上运行良好,但一旦我将代码推送到生产环境,我就会得到之前的列表 + 分离的新列表。我也试过这个:

parseFloat([heading]) + "." < 5 , parseFloat([heading]) < 5

...但没有得到想要的结果。

我不知道该怎么做,如果能在这个问题上得到一些帮助,我将不胜感激。

下面是App.js:

import { useState, useEffect } from "react";
import url from "./MagicRules.txt";
import "./App.css";

function App() {
  let tempdata = [];
  let dataSplit = [];
  let headings = [];

  const [newdata, setNewData] = useState([]);
  useEffect(() => {
    temp();
    // eslint-disable-next-line
  }, [0]);
  const temp = async () => {
    tempdata = await (await fetch(url, { mode: "no-cors" })).text();
    dataSplit = tempdata
      .split(/^\s+|\s+$/gm)
      .filter((element) => isNaN(element));
    dataSplit = dataSplit.slice(0, dataSplit.lastIndexOf("Glossary"));
    headings = dataSplit.filter((heading) => parseInt([heading]) + "." < 5);
    let newHeadings = [...new Set(headings)];
    setNewData(newHeadings);
  };
  return (
    <div className="App">
      {newdata.map((heading, index) => (
        <ul key={index}>{heading}</ul>
      ))}
    </div>
  );
}

export default App;

感谢大家的帮助和建议。如第一张图片所示,这些索引上有一个换行符 ('\n')。我通过在代码中使用 console.log(headings) 并将其部署到 Netlify/Heroku 并在访问 link 之后发现了这一点,我在浏览器的控制台中发现了这一点。

问题出在拆分函数中使用的正则表达式中。我对 's+' 做了一个小改动,将 's*' 解决了这个问题。即 split(/^\s+|\s*$/gm) 而不是 split(/^\s+|\s+$/gm).

希望这对其他人有所帮助。