如何扫描文本文件并根据Javascript中的搜索标准从中提取数据

How to scan a text file and extract data from it according to a search criteria in Javascript

本文关键字:Javascript 搜索 标准 数据 提取 何扫描 扫描 文件 文本      更新时间:2023-09-26

我试图创建一个网页,其中包括一个日历(查询日期picker)播放视频存储在vimeo上的特定日期。到目前为止,我设法获得了我点击分配给var(日期)的日期。现在我需要找到相应的vimeo ID到这个日期,以便将其分配给嵌入式vimeo播放器。我认为最好的方法是读取一个文本文件,下面的内容,我已经存储在我的网页文件夹。

……

02-04-2014_Vevey 98230271
02-05-2014_Vevey 98231062
02-06-2014_Vevey 98231771
03-04-2014_Vevey 98232437
03-05-2014_Vevey 98232658
03-06-2014_Vevey 98233405
2015-04-04 2014_vevey 98234165
04 - 05 - 2014 - _vevey 98234754

每行包含一个带有相应vimeo ID的日期信息。

关键是我刚开始使用Javascript,不知道如何发送搜索条件,逐行读取文件,从第一部分提取日期,将其与搜索条件进行比较,然后返回ID。有人愿意花点时间帮我吗?谢谢你。

丹尼尔

这里( JSBin ):

// Simulating your datasource.
var data = "'
02-04-2014_Vevey 98230271'n'
02-05-2014_Vevey 98231062'n'
02-06-2014_Vevey 98231771'n'
03-04-2014_Vevey 98232437'n'
03-05-2014_Vevey 98232658'n'
03-06-2014_Vevey 98233405'n'
04-04-2014_Vevey 98234165'n'
04-05-2014_Vevey 98234754";
// Have your data as an array, split by line break
data = data.split(''n');
function search(from, to) {
  from = normalize(from);
  to = normalize(to);
  function normalize(date) {
    return '' +
      date.getFullYear() +
      zeroPad2(date.getMonth()+1) +
      zeroPad2(date.getDate());
  }
  function zeroPad2(number) {
    return ('00'+number).slice(-2);
  }
  // do the actual filtering
  return data.filter(function (name) {
    var date = name.match(/^('d{2})'-('d{2})-('d{4})/);
    date = parseInt(date[3]+date[1]+date[2], 10);
    return (date <= to) && (date >= from);
  });
}
// Keep in mind that months are zero-based.
var from = new Date(2014, 02, 04); // 03-04-2014
var to = new Date(2014, 03, 06); // 04-06-2014
var searchResult = search(from, to);
console.log(searchResult);

@ Julien;尝试了您提出的解决方案,但似乎明显是错误的(见下文)。还有一件事是"日期- id"数据存储在外部文件中,该文件每天通过bash脚本(自动延时电影生成器)更新。所以我需要把这些数据放到页面.....

<script type="text/javascript">
  function vimeo_id_search() {
  var message = document.evaluate("//VimeoIds//VimeoID//@date[04-04-2014]",document.documentElement, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);document.getElementById("info").innerHTML = message;
}
</script>
</head>
<body>
<VimeoIds>
    <VimeoID date="02-04-2014" id="Vevey 98324123">
    <VimeoID date="03-04-2014" id="Vevey 23565723">
    <VimeoID date="04-04-2014" id="Vevey 67578673">
    <VimeoID date="05-04-2014" id="Vevey 09876542">
</VimeoIDs>
<button onclick="vimeo_id_search()">Try it</button>
<div id="info" style="background-color:#e0b0b0; width:400px"></div>
</body>
</html>

您可以通过对其路径(或$. xml)执行httpXMLrequest来请求文件的完整内容。如果您使用jquery,那么您可以使用一些正则表达式来处理它。

但是,如果您使用xml这样的有组织的格式存储数据,则会容易得多。

对于xml文件,您将能够使用xpath查询它,这使得在文件中找到您要查找的内容非常容易。

这里是确切的代码

<script type="text/javascript">
  function vimeo_id_search() {
  var message = document.evaluate("//VimeoIds//VimeoID[@date='04-04-2014']",document.documentElement, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  document.getElementById("info").innerHTML += message.snapshotItem(0).getAttribute("id");
}
</script>
</head>
<body>
<VimeoIds>
    <VimeoID date="02-04-2014" id="Vevey 98324123">
    <VimeoID date="03-04-2014" id="Vevey 23565723">
    <VimeoID date="04-04-2014" id="Vevey 67578673">
    <VimeoID date="05-04-2014" id="Vevey 09876542">
</VimeoIDs>
<button onclick="vimeo_id_search()">Try it</button>
<div id="info" style="background-color:#e0b0b0; width:400px"></div>
</body>
</html>