微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将信息读入数组

如何解决将信息读入数组

| 假设我在文件子系统information.txt中存储了以下信息
#{
    \"buildnames\": {
        label: \"buildnames\",data: [\"test2-a1\",\"test2-a2\",\"test2-a3\",\"test2-a4\",\"test2-a1\",\"test2-a4/\"
        ]
        }}; 


#{
    subsystem: \"CAS\",date: {
        label: \"CAS\",data: [null]
    },time: {
        label: \"CAS\",modules: {
        label: \"CAS\",cases: {
        label: \"CAS\",Failed: {
        label: \"CAS\",data: [[0,239],[1,249],[2,237],[3,192],[4,234],[5,288],[6,[7,195],[8,245],[9,181],[10,294],[11,[12,[13,235],[14,262],[15,155],[16,[17,121],[18,372],[19,[20,255],[21,231],[22,332],[23,[24,225],[25,271],[26,272],[27,[28,[29,131],[30,[31,165],[32,[33,201],[34,132],[35,[36,[37,211],[38,232],[39,[40,[41,[42,[43,[44,[45,261],[46,252],[47,[48,[49,161],[50,172],[51,[52,[53,241],[54,212],[55,[56,[57,[58,[59,[60,[61,[62,[63,[64,[65,[66,[67,[68,[69,[70,[71,[72,[73,[74,[75,[76,[77,[78,[79,145],[80,[81,[82,[83,[84,[85,[86,[87,[88,[89,171],[90,[91,[92,[93,[94,[95,135],[96,[97,[98,302],[99,[100,[101,214],[102,[103,[104,[105,[106,[107,[108,205],[109,311],[110,[111,[112,[113,[114,242],[115,[116,[117,[118,[119,[120,[121,[122,223],[123,[124,[125,[126,312],[127,135]
          ]
    },cover: {
        label: \"CAS\",301],135]
          ]
    }};  
并在以下脚本中读取信息。          
var xmlhttp;
function loadXMLDoc(url,cfunc){
    if (window.XMLHttpRequest)
      {// code for IE7+,Firefox,Chrome,Opera,Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6,IE5
      xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");
      }
    xmlhttp.onreadystatechange=cfunc;
    xmlhttp.open(\"GET\",url,true);
    xmlhttp.send();
}


function myFunction(){
    loadXMLDoc(\"subsysteminformation.txt\",handleXML);
}
var checkState = function(xmlhttp,callback) {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    callback();
  } else {
    // Check back again 1 sec later
    setTimeout(checkState,1000);
  }
};


function handleXML()
  {
checkState(xmlhttp,function() {
   var txt=xmlhttp.responseText;
   var datasets = [];
   var datasetsCounter =0;
   var secondPos;
   var aPosition;
   var currentCharacterLocation;
while(txt.indexOf(\"#\") > -1){   
    aPosition = txt.indexOf(\"#\");
    secondPos = txt.indexOf(\"#\",(aPosition)+1);
    aPosition++;
    datasets[datasetsCounter]=txt.substring(aPosition,secondPos);
    //var stringToCompare = txt.substring(aPosition,secondPos);
    txt = txt.substring(secondPos);
    datasetsCounter++;
    document.write(\"done\");
}
});
  }
</script>
</head>
<body onLoad=\"myFunction()\">
</body>
</html>
现在我的问题 这部分是完全错误的 while(txt.indexOf(\“#\”)> -1){         aPosition = txt.indexOf(\“#\”);         secondPos = txt.indexOf(\“#\”,(aPosition)+1);         aPosition ++;         数据集[datasetsCounter] = txt.substring(aPosition,secondPos);         // var stringToCompare = txt.substring(aPosition,secondPos);         txt = txt.substring(secondPos);         datasetsCounter ++;         document.write(\“ done \”); } 我想做的是检查文本文件中是否还有\“#\”字符,如果是,则读取之后的所有内容(直到下一个\“#\”字符,或者直到不再有任何字符为止)文档)放入数组数据集[i],但我从未超越过第一个#,也许你们中的一些聪明人可以帮助我解决我做错了的事情,我应该写些什么而不是\“ if( txt.indexOf(\“#\”)\“检查子系统信息.txt文件中是否还有\”#\“字符? 另外,如果文本中没有更多的“#”字符,我该如何阅读最后一部分信息? 在此先感谢=) 如果求解速度很快,则我不愿意加号,因为我在文件子系统information.txt =中将包含大约100个“#”字符 编辑2问题是我从来没有走过\“ While \”循环,它一直不断,我只希望一旦使用了一个\“#\”字符,就转到接下来,不要再次使用相同的\“#\”字符。 =)     

解决方法

        你可以有这样的东西   var数据集= xmlhttp.responseText.match(/^#(.[^;]*)/ gm).map(function(item){return eval(\“(\” + item.replace(/ ^#/,\ '\')+ \“)\”)}) 则数据集将是文本文件中评估对象的数组     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。